2

PHPバージョンの更新前は、ドキュメントルートを指定せずに次のようにファイルを含めることができました。

<?php include '/absolute/path/to/files/file1.php'; ?>

ただし、次のように同じファイルを含める必要があります。

<?php include $_SERVER['DOCUMENT_ROOT'].'/absolute/path/to/files/file1.php'; ?>

どのphp.ini設定が以前の動作を上書きできたでしょうか?

4

3 に答える 3

5

php.iniディレクティブが必要ですinclude_path

参照: http: //us.php.net/manual/en/ini.core.php#ini.include-path

于 2009-04-24T16:13:38.553 に答える
3

絶対パスを含めることは、PHP 5.2.9でも同じように機能するはずです(5.3を試したことはありませんが、これは変わらないはずです)。絶対パスを指定しているため、include_pathディレクティブには関係がありません。

もう少し情報を教えていただけますか?どのPHPバージョン、プラットフォーム、およびインクルードから返されるエラーが含まれるかは、すばらしいスタートです。

Linux:RHEL 5 PHP:バージョンPHP 5.2.9エラーメッセージは次のとおりです。PHP警告:require(/conf/common.php):ストリームを開くことができませんでした:/ var / www / vhosts /DOMAIN/にそのようなファイルまたはディレクトリはありませんhttpdocs / tell-a-friend-fns.php on line 63 PHP致命的なエラー:require():必要な'/conf/common.php'(include_path ='。:/ usr / share / pear:/ usr / libを開くことができませんでした) /var/www/vhosts/DOMAIN/httpdocs/tell-a-friend-fns.phpの63行目の/php:/ tmp')

さて、あなたのアプリケーションは/ var / www / vhosts / DOMAINにあり、/ conf / common.phpを探しているようですよね?あなたのファイルが実際に/conf/にあるのか、それとも/ var / www / vhosts / DOMAIN / conf /にあるのかわかりません(情報が与えられているので、後者を想定しています)。/ conf /にある場合は、Webサーバーユーザーがそのディレクトリを読み取れることを確認してください。そうでない場合は、インクルードを/var/www/vhosts/DOMAIN/httpdocs/conf/common.phpに変更します。

さらに良いことにinclude '../conf/common.php、要求されたページのメインスクリプトに関連してcommon.phpが存在する場所によっては、実行できる場合があります。

先頭に「/」が付いているパスは、Webサーバーのドキュメントルートではなく、ファイルシステムに対して絶対的なものであることに注意してください。「/」なしで指定されたパスは、実行中のスクリプト(現在のファイルではない)からの相対パスと見なされます。私の推測では、パスの前に$ _SERVER ['DOCUMENT_ROOT']を付けると、絶対パスが相対パスに変更されます。アップグレード中に削除されたjailed環境(仮想ホストで一般的)で操作していない限り、絶対パスがアップグレード前の相対パスとして機能する理由がわかりません。

于 2009-04-24T16:31:49.443 に答える
3

私はいつも次のようなものを使用します:

require( dirname( __FILE__ ) . '/../../subdir/somefile.php' );

現在のファイルからの相対パスを提供しますが、絶対パスに解決されます(現在のファイルでdirnameを使用することにより)。

于 2009-04-24T18:22:48.943 に答える