私は次の構造を持っています
otsg
> class
> authentication.php
> database.php
> user.php
> include
> config.inc.php
> encryption.php
> include.php
> session.php
> index.php
> registration.php
include.phpファイルには以下が含まれます
ini_set('display_errors', 1);
error_reporting(E_ALL);
ini_set('include_path',ini_get('include_path').':/Applications/MAMP/htdocs/otsg/:');
require_once 'config.inc.php';
require_once '../class/database.php';
require_once '../class/user.php';
require_once 'encryption.php';
require_once 'session.php';
require_once '../class/authentication.php';
そして、私が含めていたindex.phpページに
require_once 'include/include.php';
Index.phpページを開くと、次の警告と致命的なエラーが発生します。このエラーの原因はわかりません。絶対パスを指定すると機能します。しかし、絶対パスは良い考えではないと思います。
Warning: require_once(../class/database.php) [function.require-once]: failed to open stream: No such file or directory in /Applications/MAMP/htdocs/otsg/include/include.php on line 9
Fatal error: require_once() [function.require]: Failed opening required '../class/database.php' (include_path='.:/Applications/MAMP/bin/php5.3/lib/php:/Applications/MAMP/htdocs/otsg/include/:') in /Applications/MAMP/htdocs/otsg/include/include.php on line 9
前もって感謝します
つかいます
__DIR__
スクリプトの現在のパスを取得すると、問題が解決するはずです。
そう:
require_once(__DIR__.'/../class/user.php');
これにより、別のフォルダーからPHPスクリプトを実行できるため、相対パスが機能しなくなります。
編集:スラッシュの問題を修正
pHPバージョン5.2.17の場合_DIR_は動作しません。PHP5.3でのみ動作します
ただし、古いバージョンのphp dirname(_FILE_)
たとえば、このように書く
require_once dirname(_FILE_)。 '/db_config.php';
私の場合、__DIR__
またはgetcwd()
を使用しても機能しません。間違ったパスを選択し続けます。プロジェクトの絶対ベースパスで必要なすべてのファイルにコスタントを定義することで解決しました。
if(!defined('THISBASEPATH')){ define('THISBASEPATH', '/mypath/'); }
require_once THISBASEPATH.'cache/crud.php';
/*every other require_once you need*/
MAMPにphp 5.4.10があり、フォルダー階層はbasilarです:
q.php
w.php
e.php
r.php
cache/a.php
cache/b.php
setting/a.php
setting/b.php
....
私はこの同じ問題に出くわしましたが、別のインクルード内にインクルードが含まれるまで、すべて問題なく動作していました。
require_once '../script/pdocrud.php'; //This worked fine up until I had an includes within another includes, then I got this error:
Fatal error: require_once() [function.require]: Failed opening required '../script/pdocrud.php' (include_path='.:/opt/php52/lib/php')
ソリューション1。(私の公開htmlフォルダー名の望ましくないハードコーディングですが、動作します):
require_once $_SERVER["DOCUMENT_ROOT"] . '/orders.simplystyles.com/script/pdocrud.php';
解決策2。(PHP 5.3以降でのみ動作するDIRについての上記の望ましくないコメントですが、動作します):
require_once __DIR__. '/../script/pdocrud.php';
解決策3。(マイナス面は見当たらず、PHP 5.3で完全に動作します):
require_once dirname(__FILE__). '/../script/pdocrud.php';