web-dev-qa-db-ja.com

WAMPスタックとLAMPスタックの間でどのような不整合が予想されますか?

私はLAMP(Linux、Apache、MySQL、PHP)スタックに慣れていますが、特定のクライアント要件を満たすためにWAMP(Windows ...)スタックを使用しなければならない場合があります。

大きな違いはありませんが、アプリケーションがますます要求が厳しく複雑になっているため、この要件がますます高まっています。

  • 2つの間で何に注意する必要がありますか、それとも同じように動作することを完全に期待できますか?

スタックまたはOSの選択についてコメントしないでください。必要なのは、一方から他方へ、またはその逆に移動する落とし穴のリストだけです。

-アダム

5
Adam Davis

次のことが思い浮かびます。

  • 大文字と小文字の区別。 Windowsは大文字と小文字を区別しませんが、Linuxは大文字と小文字を区別します。
  • パス区切り文字。 Windowsは「;」を使用し、Linuxは「:」を使用します
  • ディレクトリ区切り文字。 Windowsは「\」を使用し、Linuxは「/」を使用します

ディレクトリ区切り文字に関する限り、PHPには DIRECTORY_SEPARATOR 定数がありますが、Linuxバリアント「/」を常に使用する方が便利であることがわかりました。 LinuxとWindowsの両方。

4
Jordan S. Jones

MySQLでは、特にテーブル名の大文字と小文字の区別に関して、2つのプラットフォーム間でデフォルト設定が異なります。すべて小文字のテーブル名を使用するか、クエリで常に大文字と小文字を正しく区別するかについて、完璧であることを確認してください。

PHPのmail()関数は、WindowsではLinuxとはかなり異なります。その機能を多用する場合は、マニュアルを注意深く読む必要があります。ファイルシステム関数の多くは、システムの動作(rename()など)によっても異なります。一般に、OS自体と相互作用する関数は、Windowsでの動作に関するコメントについてマニュアルページを確認することをお勧めします。

3
acrosman

Php.iniにはいくつかの構成の違いがあります。拡張機能がdllになるように、sendmailに依存する代わりに、デフォルトのSMTPサーバーをセットアップする必要があります。ただし、iniファイルを読むと明らかです。 WIMPコンボは本番環境で問題なく実行されるのを見てきました(したがって、WAMPははるかにスムーズになります)。したがって、ほとんどの場合、セットアップと構成であり、いくつかの拡張機能が存在する可能性があります。

1
jayrdub

ディレクトリ区切り文字については言及されていますが、次の点に注意する必要があります。

LAMPマシンでは、セパレータはファイルシステムとWebパスの両方で同じです。 LAMPマシンでは、それらは異なります。これは状況をそれほど悪化させるようには見えませんが、ファイルパスとWebパスを区別するWebパッケージをいくつか扱ってきましたが、両方に同じセパレータ定数を使用しています(osCommerce、私は見ています君は。)

すべてのパスの狂気が解決されたと思ってから数日後、私はデバッグをとても楽しんでいました。

1
Electrons_Ahoy

上記の他の項目の上に、$ _ 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"].'/';
}
1
Geoff