无法在PHP中获得正确的包含路径

时间:2012-04-30 12:44:35

标签: php include compiler-errors require

我读了一些其他相关问题,并认为这是最好的答案:

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";

我遇到了这些错误:

  

[warn] mod_fcgid:stderr:PHP致命错误:
  require_once()[function.require]:无法打开所需的'/htdocs/admin/authenticate.php'
  (include_path中= ':在/ usr /共享/梨:在/ usr /共享/ PHP:/home/linweb09/b/example.com-1050360506/user')
  在第3行的/home/linweb09/b/example.com-1050360506/user/htdocs/admin/index.php

     

[warn] 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."/");

1 个答案:

答案 0 :(得分:1)

尝试删除前导斜杠。 /htdocs/admin/authenticate.php表示您正在从根/开始工作。如果要搜索包含路径,则需要使用相对路径:

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

顺便说一句,您只需要为每个脚本设置一次包含路径 - 您不需要每个包含set_include_path()行,只需在脚本顶部执行一次。