1

他の関連する質問をいくつか読み、これが最良の答えだと思いました:

set_include_path(get_include_path().PATH_SEPARATOR."/path/to/program/root");

しかし、正しいディレクトリに移動できず、エラー メッセージも役に立たず、途方に暮れています。ユーザー領域のディレクトリ (共有ホスト) は次のようになります。

/home/linweb09/b/example.com-1050560306/user    # <-- this is my root

すべてのモデル ファイルがこのディレクトリに配置されるように、プログラムを再編成しようとしていました。

{root}/program_name/library/

web-root フォルダーは次のとおりです。

{root}/htdocs/

したがって、すべてのインクルードを次のように変更しました。

set_include_path(get_include_path().PATH_SEPARATOR
                 ."/home/linweb09/b/example.com-1050360506/user");
require_once "/program_name/library/some_module.php";

インデックスは、ユーザーを認証するために、このインクルードをロードする必要があります。

/htdocs/admin/authenticate.php
# index.php
set_include_path(get_include_path().PATH_SEPARATOR
                 ."/home/linweb09/b/example.com-1050360506/user");
require_once "/htdocs/admin/authenticate.php";

そして、私はこれらのエラーに遭遇します:

[警告] mod_fcgid: stderr: PHP 致命的なエラー:
require_once() [function.require]: 必要な '/htdocs/admin/authenticate.php' を開けませんでし
た (include_path='.:/usr/share/pear:/usr/share /php:/home/linweb09/b/example.com-1050360506/user') /home/linweb09/b/example.com-1050360506/user/htdocs/admin/index.php の
3 行目

[警告] mod_fcgid: stderr: PHP 警告:
require_once(/htdocs/admin/authenticate.php) [function.require-once]: ストリームを開けませんでした: /home/linweb09/b/example.com
にそのようなファイルまたはディレクトリはありません
-1050360506/user/htdocs/admin/index.php 3 行目

しかし、それは正しい場所にあり、エラーにはそのようなファイルやディレクトリがないと表示されるため、これをどのように構成するべきかわかりません。

これらも試しましたが、同じエラーが発生しました:

set_include_path(get_include_path().PATH_SEPARATOR."/user");
set_include_path(get_include_path().PATH_SEPARATOR."/");
4

1 に答える 1

1

Try removing the leading slash. /htdocs/admin/authenticate.php implies that you are working from root /. If you want it to search the include path, you need to use relative paths:

require_once "program_name/library/some_module.php";
require_once "htdocs/admin/authenticate.php";

Incidentally, you would only need to set the include path once per script - you dont need the set_include_path() line for every include, just once at the top of the script.

于 2012-04-30T12:51:31.713 に答える