Felix Riesterer: PHP-Skripte von Windows nach Linux portieren

Beitrag lesen

Liebe(r) Selbst,

habe mit xamp einige PHP-Skripte zum Laufen gebracht.

das bedeutet, auf Deiner Windows-Mühle tuckert ein Webserverprogramm namens Apache, ein Datenbankserver-Programm namens MySQL und eine Scriptsprache namens PHP mit einem in den Apache eingeklinkten Modul, dass PHP in Webseiten zur Verfügung stellt.

Wie sieht das jetzt bei Dir unter Linux aus?

Nun wollte ich alles auf Linux-Servern ablaufen lassen, habe PHP-5, php5-mysql, apache2, maria-db-server und client installiert. Der Funktionstest <?php phpinfo(); ?> liefert auch keine Fehler.

Soweit sehe ich einen wesentlichen Unterschied: MariaDB als Ersatz für MySQL. Bist Du sicher, dass Deine mysql-Funktionen unter PHP reibungslos mit MariaDB zusammenarbeiten?

Aber bei meinen Skripten funktioniert nichts mehr.

Extrem ungenaue Fehlerbeschreibung. Was exakt steht in Deinem Error-Log unter "/var/log/apache2/error.log"? Mach mal eine Shell auf (SSH-Verbindung z.B. mit PuTTY) und tippe ein:

tail /var/log/apache2/error.log

Da sollte nun etwas stehen, das Dir weiterhilft. Du darfst gerne die erhaltenen Fehler hier posten, wenn Du sie nicht selbst verstehst.

Obwohl ich in Notpad++ bei allen Zeilenenden das CR rausgenommen habe. Die Kodierung steht auf UTF-8. Ist das so richtig?

UTF-8 ist richtig. "Ohne BOM" wäre eine dazu nützliche Einstellung. Die CRs würde ich aber lassen. Unter Windows solltest Du immer CRLF als Zeilenenden haben, Linux kann das auch wunderbar verarbeiten.

Konkret bekomme ich für fast jede Zeile die Meldung "Kommando nicht gefunden"

Wenn Du im Browser Deinen Apache kontaktierst? Welche "Internetadresse" gibst Du denn ein? http://localhost/? Und das führt im Fehlerlog (s.o.) zu "Kommando nicht gefunden"? Sehr seltsam das.

Ich habe dann auch die Zeile #!/usr/bin/php eingefügt. Brauch ich die?

Nur, wenn Du PHP nicht aus dem Apache heraus nutzt, sondern von der Shell aus.

Wie geht man vor, wenn man funktionierende PHP-Skripte von Windows-Rechnern auf Linux-Rechner portieren möchte?

Copy&Paste. Ich habe eine Partition, die sowohl unter Windows, als auch unter Linux gelesen werden kann. Meine Web-Projekte befinden sich dort. Sowohl unter Apache/Windows als auch unter Apache/Linux sind die identisch lauffähig.

Liegt es vielleicht am kopieren mit WinSCP. Hier ist Default:binary für das Transferformat eingestellt.

Auch das sieht absolut richtig aus.

Also: Was steht in der Fehlerlog-Datei (/var/log/apache2/error.log)?

Liebe Grüße,

Felix Riesterer.

--
"Wäre die EU ein Staat, der die Aufnahme in die EU beantragen würde, müsste der Antrag zurückgewiesen werden - aus Mangel an demokratischer Substanz." (Martin Schulz, Präsident des EU-Parlamentes)