質問: windowsとcentosでのphpの動作 いつもお世話になっております。 windows環境で開発したphpアプリをcentos環境に移行しようとしているのですが、 件名のとおり、phpのrequireの動作がwindowsとcentosで違うことから、 原因を調べております。お知恵を拝借したいと思います。 例えば、以下の構成で親プログラム(myapp.php)から子(myparts/main.php)を読み込もうとしています。 ドキュメントルート/test/myapp.php ドキュメントルート/parts/mypartsa/main.php ●myapp.php php echo ("##### myapp is starting now !!! ●mypartsa/main.php php echo ("#### mypartsa is required and myapp.php and mypartsa/main.php are in following structure. 結果として、 ●windowsでは、以下が表示されますが・・・ ##### myapp is starting now !!! #### mypartsa is required ●centosでは、以下のとおりエラーになります。 php warning: require_once(/parts/mypartsa/main.php) []: failed to open stream: no such file or directory in /var/www/html/test/myapp.php on line 12 php fatal error: require_once() []: failed opening required (/parts/mypartsa/main.php’(include_path='.:/php/includes:/usr/share/pear:/usr/share/pear/pear:/var/www/html') in /var/www/html/test/myapp.php on line 12 解決策として、以下のようにすればエラーが解消することは分かっているのですが・・・ require_once($_server['document_root']./parts/mypartsa/main.php); なるべく既存のアプリに手を入れたくないので、 何故windowsではできて、何故centosではできないのかを知りたいと思います。 とりあえず、php.iniのinclude_pathを調べてみましたが、 表記方法の違いはあるものの、に意味的な違いが見つかりません。 ●windowsでの設定 .;c:\php;c:\php\pear;c:\apache2.2.22\htdocs ●centosでの設定 .:/php/includes:/usr/share/pear:/usr/share/pear/pear:/var/www/html この他何をポイントに調べていったらよいか教えていただければと思います。 よろしくお願いします。
回答: centosというかlinux全般では先頭の「/」はシステムのルートディレクトを指定しますので それで参照がうまくいっていないのだとおもいます。 先頭の「/」を外すかカレントディレクトリをあらわす「./」を使用して require_once('parts/mypartsa/main.php'); もしくは require_once('./parts/mypartsa/main.php'); のように記述してみてください。