WindowsでPHPをコーディングし、後でLinuxを実行しているサーバーでPHPをホストしても問題ありませんか?そのようなプロジェクトの移行に問題はありますか?
私はPHPの初心者であり、OS固有の高度な機能は使用しないため、特に問題はないと思います。ただし、Linuxがまったく好きではないので、確認したいと思います。
WindowsでPHPをコーディングし、後でLinuxを実行しているサーバーでPHPをホストしても問題ありませんか?そのようなプロジェクトの移行に問題はありますか?
私はPHPの初心者であり、OS固有の高度な機能は使用しないため、特に問題はないと思います。ただし、Linuxがまったく好きではないので、確認したいと思います。
回答:
いくつかのポインター:
ファイルシステムの大文字と小文字の区別
ファイルの名前がHelloWorld.phpの場合、次のようにします。
include "helloworld.php";
Windowsでは合法であり、動作します。しかし、Linuxのファイル名は、あなたが呼ばれるファイルを持つことができ、大文字と小文字が区別されHelloWorld.php
、helloworld.php
、hEllOwOrlD.php
同じディレクトリに。したがって、大文字と小文字を区別するファイルシステムで開発しているようにWindowsで開発する必要があります。正確なファイル名、ディレクトリ名、拡張子名を使用.php
し.PHP
ます。
ディレクトリとパスの区切り
Windowsでは次のように言います:
include 'classes\myClass.php';
しかし、Linuxでは次のように言います。
include 'classes/myClass.php';
PHPは気にしないほど賢く、両方のセパレーターは両方のシステムで動作します。ただし、ほとんどのシステムでは標準であるため、一貫性を保ち、どこでもスラッシュ(/)を使用する必要があります。あなたがそこまで行きたいなら、正しいものに変換する気の利いた事前定義された定数 がありDIRECTORY_SEPARATOR
ます:
include "classes" . DIRECTORY_SEPARATOR . "myClass.php";
同じことがWindowsのセミコロンであるパス区切り文字にも当てはまります。それ以外の場合はコロンになります。安全のために、次のことを行う必要があります。
set_include_path(get_include_path() . PATH_SEPARATOR . $path);
パス区切り文字が必要な場合。ほとんどの人は、PHPが使用するセパレータを気にしないので問題ないと考えていますが、重要な問題が1つあります。セパレータは、システムにディレクトリまたはパスを要求するときにシステム固有のものになります。だから、インクルードパスをその部分に分解したいとしましょう:
$includePath = get_include_path();
$pathParts = explode(";", $includePath) // Will only work on Windows
$pathParts = explode(":", $includePath) // Will work on other systems but not Windows
$pathParts = explode(PATH_SEPARATOR, $includePath) // Will work everywhere!!!
ファイルのエンコードと区切り記号
すべてのスクリプトのファイルエンコーディングをCp *ではなくUTF-8に設定し、ファイル行の区切り文字を("\n"
ではなく"\r\n"
)Unixに設定するようにIDEを設定する必要があります。ほとんどの場合、それは実際には重要ではありませんが、一貫性を保つ必要があり、最良の方法はUnixの方法です(Windowsでは正常に機能しますが、その逆は成り立ちません)。
あなたは実行することはできませんstrftime()
と%e
に注目されるように、Windows環境でのマニュアルのページ:
すべての変換指定子がCライブラリでサポートされているわけではありません。その場合、PHPのstrftime()でサポートされていません。さらに、すべてのプラットフォームが負のタイムスタンプをサポートしているわけではないため、日付範囲はUnixエポック以前に制限される場合があります。つまり、%e、%T、%R、および%D(および場合によってはその他)と1970年1月1日より前の日付は、Windows、一部のLinuxディストリビューション、および他のいくつかのオペレーティングシステムでは動作しません。Windowsシステムの場合、サポートされている変換指定子の完全な概要は» MSDNにあります。
Linuxテストベッドを設定します。Windowsで実行されている仮想Linuxコンピューター、デュアルブートコンピューター、友人のシステムなどです。その後、たまに(たとえば月曜日の朝)、コードをLinuxシステムに移植してテストします。
他の答えはあなたが直面する主な問題を処理しましたが、次のような多くの小さな落とし穴があります:
はい、これらすべての違いを慎重に回避する方法がありますが、回避策を使用するように注意しましたか?もちろんそうではありません-あなたがコーディングして実行したので、大丈夫でなければなりません。
同様のオペレーティングシステムでテストされるまで、ホストコンピューターには何も置かないでください。
私はWindowsからLinuxへの移植の経験はありませんが、LinuxからWindowsへの移植の経験があり、LinuxからOS Xへの移植の経験があります。
LinuxのコマンドラインとvimのようなLinux編集ツールはかなり快適ですが、PHP開発のほとんどはWindowsマシンで行います。
私は、開発サーバーとして使用する仮想サーバーをインターネット上に持っており(月に約20ドル実行されます)、FileZillaを使用して接続します。FileZillaは、編集中のファイルを一時ディレクトリにダウンロードし、保存を追跡します。保存すると、それをdevサーバーにスローし、そこからテストします。
少し面倒ですが、ほとんどどこでも開発を行うことができます。FileZillaとサムドライブのシンプルなエディターを使用して、別のコンピューターから接続して変更を加えることもできます。すべてのテストは常にLinuxサーバーで行われるため、箱から出してすぐに発生する可能性のある問題をキャッチします。サーバーにコードを投げたときの不快な驚きが減ります。
安価なホスティングアカウントでも同じことができます(ただし、開発中のアプリケーションの種類によっては、通常、安価なホスティングアカウントはかなり性能が低いためパフォーマンスの問題が発生する場合があります)。アップロード機能。
ほとんどの人が言ったように、本当に問題はないはずです。とはいえ、VirtualBoxを使用すると、Linux仮想マシンを非常に簡単に立ち上げることができ、コードベースをテストして、本番環境を便利に使用しなくても本番環境で動作することを確認できます。