通过绝对路径在PHP中包含文件的问题

时间:2011-08-29 17:22:27

标签: php linux apache

我在部署网站时遇到了麻烦。我一直在Windows下使用WAMP构建它,现在我正在部署到Linux。

这样的代码适用于Windows:

req.php

echo "This is req<br>";
ini_set("include_path", "/home/clash/public_html/:".get_include_path());
require "/req1.php";

req1.php

echo "This is req1";

但在生产环境中失败并显示以下消息:

  

警告:require(/req1.php)[function.require]:无法打开流:   第5行/home/clash/public_html/req.php中没有这样的文件或目录

     

致命错误:require()[function.require]:需要打开失败   '/req1.php'   (include_path中= '/家/冲突/的public_html /:.:/ usr / lib中/ PHP:在/ usr /本地/ LIB / PHP')   在第5行的/home/clash/public_html/req.php

ini_set中的路径是服务器文件系统上网站实际位置的路径。

我不想避免绝对路径,因为我使用的库有点依赖它们。

我确信我在这里遗漏了一些非常简单的东西,但我无法弄清楚是什么。

谢谢!

2 个答案:

答案 0 :(得分:2)

在Linux上,/是文件系统的根,类似于Windows上的C:\。删除前导/,它将按预期工作。

答案 1 :(得分:0)

您可以使用PATH_SEPARATOR常量替换硬编码路径分隔符。这样您就可以确保include_path的价值是跨平台的。