私はLAMP(Linux、Apache、MySQL、PHP)スタックに慣れていますが、特定のクライアント要件を満たすためにWAMP(Windows ...)スタックを使用しなければならない場合があります。
大きな違いはありませんが、アプリケーションがますます要求が厳しく複雑になっているため、この要件がますます高まっています。
スタックまたはOSの選択についてコメントしないでください。必要なのは、一方から他方へ、またはその逆に移動する落とし穴のリストだけです。
-アダム
次のことが思い浮かびます。
ディレクトリ区切り文字に関する限り、PHPには DIRECTORY_SEPARATOR 定数がありますが、Linuxバリアント「/」を常に使用する方が便利であることがわかりました。 LinuxとWindowsの両方。
MySQLでは、特にテーブル名の大文字と小文字の区別に関して、2つのプラットフォーム間でデフォルト設定が異なります。すべて小文字のテーブル名を使用するか、クエリで常に大文字と小文字を正しく区別するかについて、完璧であることを確認してください。
PHPのmail()関数は、WindowsではLinuxとはかなり異なります。その機能を多用する場合は、マニュアルを注意深く読む必要があります。ファイルシステム関数の多くは、システムの動作(rename()など)によっても異なります。一般に、OS自体と相互作用する関数は、Windowsでの動作に関するコメントについてマニュアルページを確認することをお勧めします。
Php.iniにはいくつかの構成の違いがあります。拡張機能がdllになるように、sendmailに依存する代わりに、デフォルトのSMTPサーバーをセットアップする必要があります。ただし、iniファイルを読むと明らかです。 WIMPコンボは本番環境で問題なく実行されるのを見てきました(したがって、WAMPははるかにスムーズになります)。したがって、ほとんどの場合、セットアップと構成であり、いくつかの拡張機能が存在する可能性があります。
ディレクトリ区切り文字については言及されていますが、次の点に注意する必要があります。
LAMPマシンでは、セパレータはファイルシステムとWebパスの両方で同じです。 LAMPマシンでは、それらは異なります。これは状況をそれほど悪化させるようには見えませんが、ファイルパスとWebパスを区別するWebパッケージをいくつか扱ってきましたが、両方に同じセパレータ定数を使用しています(osCommerce、私は見ています君は。)
すべてのパスの狂気が解決されたと思ってから数日後、私はデバッグをとても楽しんでいました。
上記の他の項目の上に、$ _ SERVER ["DOCUMENT_ROOT"]は、LinuxではなくWindowsではスラッシュで終わることに気づきました。
大きな問題ではありません。ネストされたインクルード/書き換え、またはcss/jsをリンクするだけでも、それに応じて末尾のスラッシュ動作を確認する必要があります。
便利だったからといって:)-事前に作成された関数があります。
function docroot() {
$needle = '/';
$haystack = $_SERVER["DOCUMENT_ROOT"];
$length = strlen($needle);
$end = $length * -1; //negative
if (substr($haystack, $end) === $needle)
return $_SERVER["DOCUMENT_ROOT"];
else
return $_SERVER["DOCUMENT_ROOT"].'/';
}