Cross kompilieren Sie PHP mit UCLIBC

9

DAS IST EINE REPOST, VORHERIGE POST GESCHLOSSEN, ZU SERVERFAULT GEWECKT UND WIEDER GESCHLOSSEN. Ich denke, dass dieser Beitrag ein stackoverflow-Problem ist, weil ich denke, dass er von einigen verursacht wird automake / compile / linking Fehler. Dies ist ein Programmierproblem, kein Problem mit dem Server-Admin.

Cross kompilieren Sie PHP

Ссылка

Postbeginn

Ich habe die PHP 5.4.0-Quelle heruntergeladen, extrahiert und in den Quellordner verschoben.

Ich mache eine Konfiguration mit:

%Vor%

Gefolgt von

%Vor%

keine Fehler, alles läuft gut. Als nächstes mache ich eine make install.

%Vor%

Wieder läuft alles gut. Ich verschiebe es auf die Zielplattform und führe

aus %Vor%

Ich teste eine einfache Homepage mit meinem Webserver und direkt mit php.

%Vor%

es funktioniert wie erwartet. Als nächstes test ich:

%Vor%

oh nein

%Vor%

Ich setze ein anderes Skript ein:

%Vor%

Gleiches Ergebnis:

%Vor%

habe ich eine php.ini?

%Vor%

ja, und keine deaktivierten Funktionen. Strace testen / usr / arm / www / bin / php index.php

%Vor%

Die Datei info.txt existiert und es wurde die Erlaubnis gegeben, darauf zu lesen / schreiben.

Testen von strace / usr / arm / www / bin / php shell.php

%Vor%

Wenn ich die index.php durch gdb ausführe gibt es mir:

%Vor%

gdb gibt mir das von shell.php Startprogramm: / usr / arm / www / bin / php shell.php

%Vor%

zend.h befindet sich in / usr / arm / www / include / php / Zend / Offensichtlich ist bei der Cross-Compilation etwas schief gelaufen. was habe ich verpasst? Ich finde kein configure-Flag, um dies zu korrigieren, und das Erstellen eines Symlinks zum gewünschten Ort entfernt die Ausgabe von gdb, aber php segfolds.

Danke für jede Hilfe!

UPDATE:

%Vor%

Update2

Valgrind mit memcheck erneut ausführen, habe ungefähr die gleiche Ausgabe wie zuvor, aber das war neu:

%Vor%

Update3

Während valgrind mich gescheitert ist, habe ich mit gdb weitergemacht, den Ordner /home/maiden/..etc auf meinem Zielsystem erstellt und den Inhalt meines php / include-Ordners kopiert und gdb erneut ausgeführt. jetzt bekomme ich diese Fehlermeldung:

%Vor%

Das ist sehr ähnlich dem, was sixeigtzero gestern in den Kommentaren geschrieben hat. Ich habe jetzt PHP Version 5.3.5, 5.4.0, 5.4.5 gleichen Fehler auf allen versucht.

Update4

Ich habe eine neue Toolchain für glibc heruntergeladen, eine neue busybox mit glibc kompiliert, ein chroot-jail erstellt, einen kompilierten php mit glibc anstelle von uclibc kompiliert und es in meinem chroot-jail auf meiner uclibc-Box getestet und es funktioniert! Aber ich muss noch PHP in meiner uclibc-Umgebung arbeiten lassen ....

    
Maidenone 17.08.2012, 11:04
quelle

1 Antwort

3

Ich würde configure.log von uClibc überprüfen, um zu sehen, ob ARCH_USE_MMU und fork aktiviert ist. Wenn nicht, wird Vfork durch fork ersetzt, was wahrscheinlich von shell_exec verwendet wird. Das Hauptproblem bei vfork ist, dass Eltern und Kind denselben Speicherplatz benutzen, was zu seltsamen Abstürzen führt.

    
sardok 17.08.2012 13:06
quelle

Tags und Links