Ist es in Ordnung, PHP unter Windows zu codieren und es später auf einem Server unter Linux zu hosten? Kann es Probleme bei der Migration eines solchen Projekts geben?
Ich würde denken, dass es wirklich keine Probleme geben kann, zumal ich ein Anfänger in PHP bin und keine der erweiterten Funktionen verwende, die betriebssystemspezifisch sein könnten. Ich möchte jedoch sicherstellen, dass mir Linux überhaupt nicht gefällt.
Antworten:
Einige Hinweise:
Groß- / Kleinschreibung des Dateisystems
Wenn Ihre Datei HelloWorld.php heißt:
ist unter Windows legitim und wird funktionieren. Aber Linux - Dateinamen Groß- und Kleinschreibung, können Sie Dateien mit dem Namen
HelloWorld.php
,helloworld.php
,hEllOwOrlD.php
im selben Verzeichnis. Daher sollten Sie unter Windows so entwickeln, als ob Sie auf einem Dateisystem mit Groß- und Kleinschreibung arbeiten: Verwenden Sie genau die richtigen Dateinamen, Verzeichnisnamen und Erweiterungsnamen -.php
unterscheidet sich auch von.PHP
.Verzeichnis- und Pfadtrennzeichen
In Windows sagen wir:
Aber unter Linux würden wir sagen:
PHP ist klug genug, sich nicht darum zu kümmern, beide Separatoren funktionieren in beiden Systemen. Aber Sie sollten konsistent sein und den Schrägstrich (/) überall verwenden, da dies auch auf den meisten Systemen die Norm ist. Es gibt eine raffinierte vordefinierte Konstante
DIRECTORY_SEPARATOR
, die in die richtige Konstante übersetzt wird, wenn Sie so weit gehen möchten:Gleiches gilt für das Pfadtrennzeichen, das unter Windows durch ein Semikolon gekennzeichnet ist, andernfalls durch einen Doppelpunkt. Um sicher zu gehen, sollten Sie Folgendes tun:
wenn ein Pfadtrennzeichen benötigt wird. Obwohl die meisten Leute denken, dass PHP nichts dagegen hat, welches Trennzeichen Sie verwenden, ist es in Ordnung, aber es gibt einen wichtigen Haken: Die Trennzeichen sind die systemspezifischen, wenn Sie das System nach Verzeichnissen oder Pfaden fragen. Also lassen Sie uns sagen , Sie wollen explodieren die Include - Pfad in seine Teile:
Dateicodierung und Trennzeichen
Sie sollten Ihre IDE so einstellen, dass die Dateicodierung für alle Ihre Skripte auf UTF-8 anstelle von Cp * und das Trennzeichen für die Dateizeile auf Unix (
"\n"
anstelle von"\r\n"
) eingestellt wird. In den meisten Fällen spielt es keine Rolle, aber Sie sollten konsistent sein und der beste Weg ist der Unix-Weg (der unter Windows gut funktioniert, aber nicht umgekehrt).quelle
Sie können nicht
strftime()
mit%e
in Windows-Umgebung ausgeführt werden, wie in der Manpage vermerkt :quelle
Es wird keine Probleme geben, den Code auszuführen. Wenn Sie die unter Windows in Linux gespeicherten Dateien bearbeiten, werden Sie möglicherweise feststellen, dass die Zeichen am Zeilenende unterschiedlich sind, aber nichts anrichten. Wenn es Sie stört, konfigurieren Sie Ihre Windows-IDE / -Editor für die Verwendung von Unix-Zeilenende.
quelle
Richten Sie sich mit einem Linux-Testbed ein. Es könnte ein virtueller Linux-Computer sein, der unter Windows läuft, es könnte ein Dual-Boot-Computer sein, es könnte das System eines Freundes sein. Dann portieren Sie Ihren Code von Zeit zu Zeit (z. B. Montagmorgen) auf das Linux-System und testen Sie ihn.
Die anderen Antworten behandelten die Hauptprobleme, denen Sie gegenüberstehen, aber es gibt zahlreiche kleinere Fallstricke, wie:
Ja, es gibt Möglichkeiten, diese Unterschiede sorgfältig zu umgehen, aber haben Sie die Umgehungsmöglichkeiten sorgfältig genutzt? Natürlich nicht - du hast codiert und es lief, also muss es in Ordnung sein.
Legen Sie nichts auf einen Host-Computer, bevor dieser nicht auf einem ähnlichen Betriebssystem getestet wurde.
Ich habe keine Erfahrung mit dem Portieren von Windows nach Linux, aber ich habe Erfahrung mit dem Portieren von Linux nach Windows und mit dem Portieren von Linux nach OS X. Dies ist möglich, aber die Schlüssel sind Testen, Testen und Testen.
quelle
Obwohl ich mich in der Linux-Befehlszeile und mit Linux-Bearbeitungstools wie vim ziemlich wohl fühle, entwickle ich den größten Teil meiner PHP-Entwicklung auf einem Windows-Computer.
Ich habe einen virtuellen Server im Internet (kostet ungefähr 20 US-Dollar pro Monat), den ich als Entwicklungsserver verwende und mit dem ich über FileZilla eine Verbindung herstelle. FileZilla lädt die Dateien, die ich bearbeite, in ein temporäres Verzeichnis herunter und protokolliert die gespeicherten Daten. Wenn ich sie speichere, werden sie wieder auf dem Entwicklungsserver gespeichert und von dort aus getestet.
Es ist etwas umständlich, aber ich kann die Entwicklung so ziemlich überall durchführen. Mit FileZilla und einem einfachen Editor auf einem USB-Stick kann ich sogar von einem anderen Computer aus eine Verbindung herstellen und Änderungen vornehmen. Alle Tests finden immer auf dem Linux-Server statt, sodass ich Probleme, die ich möglicherweise verursacht habe, sofort aufspüre - weniger unangenehme Überraschungen, wenn ich den Code auf den Server bringe.
Sie könnten dasselbe mit einem billigen Hosting-Konto tun (obwohl je nach Art der Anwendung, die Sie entwickeln, Leistungsprobleme auftreten können, da billige Hosting-Konten in der Regel nicht ausreichend ausgelastet sind). Upload-Funktionalität.
quelle
Ja, das ist möglich, aber einige Dinge, die Sie beachten müssen. Überprüfen Sie die Antworten auf weitere Informationen.
Es ist eines dieser Dinge, die Entwickler manchmal aufgrund von Ressourcen tun müssen, nicht weil sie es mögen.
Möglicherweise ist auf Ihrem PC ein lokaler Webserver (Apache, Cherokee, sogar M $) und ein PHP-Server installiert. Und Ihr PC hat möglicherweise keine Internetverbindung oder kann nur für kurze Zeit eine Verbindung herstellen.
Später können Sie eine reale Website aktualisieren und Ihre Datei mit FTP-Tools auf den realen Server aktualisieren, wobei derselbe oder ein anderer PC mit dem Internet verbunden ist.
quelle
Wie die meisten Leute sagten, sollte es wirklich keine Probleme geben. Mit VirtualBox können Sie eine virtuelle Linux-Maschine, auf der Sie Ihre Codebasis testen können, auf einfache Weise in Betrieb nehmen, um sicherzustellen, dass sie in der Produktionsumgebung funktioniert, ohne die Produktionsumgebung zur Hand zu haben.
quelle