web-dev-qa-db-ja.com

Linuxを実行しているサーバーに展開されるWindows上のPHPアプリケーションを効果的に開発することは可能ですか?

PHPをコーディングし、後でLinuxを実行しているサーバーでホストしますか?このようなプロジェクトの移行に問題はありますか?

特にPHPの初心者であり、OS固有の高度な関数を使用しないので、特に問題はないと思います。ただし、私はLinuxがまったく好きではないので、確認したいと思います。

19
DotNetStudent

いくつかのポインタ:

ファイルシステムの大文字と小文字の区別

あなたのファイルがHelloWorld.phpと呼ばれている場合、これは:

include "helloworld.php";

windowsでは合法であり、動作します。ただし、Linuxのファイル名では大文字と小文字が区別されます。同じディレクトリにHelloWorld.phphelloworld.phphEllOwOrlD.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つあります。システムにディレクトリを要求すると、システム固有のセパレータになります。パス。 explode がその部分へのインクルードパスをしたいとしましょう:

$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に設定し、ファイル行区切り文字をUnix("\n"ではなく"\r\n")に設定するには、IDEを設定する必要があります。ほとんどの場合、本当に重要ではありませんが、一貫している必要があり、最良の方法はUnixの方法です(これはWindowsではうまく機能しますが、その逆はできません)。

27
yannis

manual page に記載されているように、Windows環境ではstrftime()%eとともに実行することはできません。

すべての変換指定子がCライブラリでサポートされているとは限りません。その場合、PHPのstrftime()ではサポートされません。さらに、すべてのプラットフォームが負のタイムスタンプをサポートしているわけではないため、日付範囲がUnixエポック以前に制限されない場合があります。これは、%e、%T、%R、および%D(および場合によってはその他)、および1970年1月1日より前の日付は、Windows、一部のLinuxディストリビューション、およびその他のいくつかのオペレーティングシステムでは機能しないことを意味します。 Windowsシステムの場合、サポートされている変換指定子の完全な概要は" [〜#〜] msdn [〜#〜] にあります。

6
ilhan

コードの実行に問題はありません。 LinuxのWindowsに保存されたファイルを編集すると、行末文字が異なる場合がありますが、何も害はありません。気になる場合は、WindowsのIDE /エディタでUnixの行末を使用するように設定してください。

4
Pierre

Linuxのテストベッドを使ってセットアップします。それは、Windowsで実行されている仮想Linuxコンピューター、デュアルブートコンピューター、友人のシステムなどです。その後、時々(月曜日の朝など)、コードをLinuxシステムに移植してテストします。

他の答えはあなたが直面する主な問題を処理しましたが、次のような小さな問題が数多くあります。

  • 一時ディレクトリは別の場所にあります
  • ファイルとディレクトリの権限が異なります
  • system()関数は根本的に変化します
  • Apacheが変更として実行するユーザー名
  • Windowsで機能するものXP= Windows 8では機能しない可能性があります。

はい、これらの違いすべてを注意深く回避する方法はありますが、回避策を慎重に使用しましたか?もちろん、そうではありません-コード化して実行したので、問題はありません。

同様のオペレーティングシステムでテストされるまで、ホストコンピュータには何も置かないでください。

私はWindowsからLinuxへの移植の経験はありませんが、LinuxからWindowsへの移植の経験があり、LinuxからOS Xへの移植の経験があります。それは可能ですが、重要なのはテスト、テスト、テストです。

3
Andy Canfield

LinuxコマンドラインとvimのようなLinux編集ツールにはかなり慣れていますが、WindowsマシンでPHP開発のほとんどを行います。

インターネット上に仮想サーバーがあり(月額約$ 20)、開発サーバーとして使用しており、FileZillaを使用してそれに接続しています。 FileZillaは、編集中のファイルを一時ディレクトリにダウンロードし、保存を追跡します。保存すると、開発サーバーに戻され、そこからテストします。

少し面倒ですが、ほとんどどこでも開発を行うことができます。 FileZillaとサムドライブのシンプルなエディターを使用して、別のコンピューターから接続して変更を加えることもできます。すべてのテストは常にLinuxサーバー上で行われるので、箱から出したときに発生する可能性のある問題をすべてキャッチします。サーバーにコードをスローしたときに不快な驚きが少なくなります。

安価なホスティングアカウントでも同じことを行うことができます(ただし、開発しているアプリケーションの種類によっては、通常、安価なホスティングアカウントでは十分な能力がないため、パフォーマンスの問題が発生する可能性があります)。他の多くのFTPアプリケーションにも編集とアップロード機能。

1
cori

はい、それは可能ですが、考慮しなければならないいくつかのものがあります。詳細については回答を確認してください。

それらの1つであり、リソースが原因で開発者が行う必要がある場合もあります。

PCにローカルWebサーバー(Apache、cherokee、さらにはM $)があり、PHP serverがインストールされている。PCがインターネットに接続していないか、短期間。

後で、実際のWebサイトを更新し、FTPツールを使用して、同じPCまたは別のPCをインターネットに接続して、実際のサーバーにファイルを更新できます。

1
umlcat

ほとんどの人が言ったように、本当に問題はないはずです。そうは言っても、- VirtualBox を使用すると、コードベースをテストしてLinuxマシンを立ち上げ、本番環境で機能することなく本番環境で機能することを確認できます。

0
Wyatt Barnett