2

重複の可能性:
require_onceの相対パスが機能しない

私はそのようなプロジェクト構造を持っています:

ProjectName/
   src
     test
       TestClass.php
   tests
     TestTestClass.php

tests / TestTestClass.phprequire_once '/ProjectName/src/test/TestClass.php';にアクセスしようとすると、PHPから次のようなエラーが発生します。そのようなファイルやディレクトリはありません。

スペルをチェックしました。すべてをチェックしました。これを他の人に渡す必要があるので、フルパスを与えることはできませ/home/userName/bla/blaん。

何か案は?

4

4 に答える 4

2

これは予想される動作です。を実行するTestTestClass.phpと、作業ディレクトリはに設定されProjectName/testsます。

を使用することをお勧めします../src/test/TestClass.php

あなたの道は実際には絶対的であるため、あなたはからまっすぐに作業することになりますが/、それはあなたが期待していることではありません。サーバーのディレクトリルートに設定されている場合include_path、コードは最初のがなくても機能します/include_pathまたは任意のレベリング(を使用)に依存したくない場合は..、アプリケーションルートへのフルパスを定義する環境変数を最初のファイルにいつでも設定し、それをすべてのインクルードに使用できます。

/ProjectName/index.php

define('APPPATH', __DIR__);

..そしてで/ProjectName/tests/TestTestClass.php

require_once APPPATH . '/src/test/TestClass.php';
于 2013-01-19T22:15:23.873 に答える
1

require / include / require_once / include_onceに渡される絶対ファイルパスはすべて、Webサーバールートではなくファイルシステムルートから機能します

于 2013-01-19T22:15:22.847 に答える
0

特別なDIRを使用して、スクリプトの現在のパスなどを取得します。これにより、スクリプトパスを簡単に見つけることができます。

require_once(__DIR__ . '../folder/whatever.php');
于 2013-01-19T22:16:22.920 に答える
0

プロジェクトのパス定数を作成すると便利です。__FILE__これは、定数とで簡単に行うことができdirname()ます。

define('ROOT_PATH', dirname(__FILE__));

上記は構成ファイルに入れることができるので、プロジェクト全体にファイルを含めるのが簡単です。

require_once ROOT_PATH . '/src/test/TestClass.php';

オートローダーを調べることもお勧めします。

于 2013-01-19T22:16:39.407 に答える