0

プロジェクトのルートディレクトリを定義するためにinitialize.phpを作成しました。

defined('DS') ? null : define('DS', DIRECTORY_SEPARATOR);
defined('SITE_ROOT') ? null : define('SITE_ROOT', DS.'works'.DS.'myproject');

私はそれをどのディレクトリからでもこのようなものに含めます。

require_once("../includes/initialize.php");

他のファイルを簡単に含めることができます。ファイルをサーバーにアップロードするので、initialize.phpファイルのみを変更する必要があります。

できます。しかし、ユーザーフレンドリーなURLを使用し、そこからajaxファイルを呼び出すと、initialize.phpを含めるディレクトリ階層がわかりません。

私はこれをしたくありません:

require_once("/works/myproject/includes/initialize.php");

すべてのファイルに対して。毎回アップロードすると変わるので。

すべてのユーザーにセッションやCookieを使用したくありません。

これにはトリックがあるはずですが、見つかりませんでした。ユーザーフレンドリーなURLとajax呼び出しを使用しながら、どこからでもプロジェクトルートを取得する方法はありますか?


それを私が直した。

私がajaxでそれを呼ぶとき、それは大丈夫です。しかし、私はそれをいくつかの条件のためにphpとしても含めました。

現在のファイルとajaxファイルが異なるフォルダーにあるため、クラッシュしました。

したがって、ajaxで呼び出されたときにinitialize.phpのみが必要になるように変更すると、問題は解決しました。

4

3 に答える 3

1

Apache を使用している場合は、includes ディレクトリを include_path ディレクティブに追加してみてください。

phpinfo() を実行して現在の値を見つけ、include_pathを探してから、最上位の Web ディレクトリで再宣言し、includes ディレクトリに絶対パスを追加してみてください。

したがって、デフォルト値が次の場合:

include_path = ".:/usr/bin/php:/some/other/directory"

.htaccess ファイルに同じものをコピーして貼り付けますが、最後にインクルード ディレクトリを追加し、コロンで区切ります。

include_path = ".:/usr/bin/php:/some/other/directory:/works/myproject/includes"

そうすれば、毎回絶対パスを参照する必要がなくなります。

これはすべて、ウェブホストが付与する権限に依存します。これを行うには他にも (より簡単な) 方法がありますが、それらのほとんどは通常、ホスティング プロバイダーによって制限されていることがわかりました。

PHP のインクルードパスを作成する 5 つの方法

于 2012-09-05T06:30:06.590 に答える
0

単純にこれを行う:

require_once("../includes/initialize.php");

PHPはフレンドリ URL を確認しないため、これで十分です。スクリプトに関連して含めるように彼に与えるものはすべて含まれます。

また$_SERVER['DOCUMENT_ROOT']、ルートディレクトリからの絶対パスを提供するものもあります。

于 2012-09-05T06:27:32.717 に答える
0

initialize.php を追加したときに、すべてのディレクトリを共通ファイルに定義することをお勧めします。この共通ファイルをプロジェクトのすべてのファイルに含める必要があります。ユーザーフレンドリーな URL は、ファイルのインクルードには影響しません。

于 2012-09-05T06:33:57.263 に答える