【问题标题】:include_path behaviour not working as expectedinclude_path 行为未按预期工作
【发布时间】:2013-12-17 09:31:04
【问题描述】:

我刚刚将大量网站移动到新的 VPS 并遇到了一个奇怪的问题 与包含路径。这在旧服务器上运行良好,但是 不上新。

我会尝试用一个简单的例子来解释它......

/home/kin/www/lib/Zend/home/kin/www/ipb/_membadmin/Zend 有一个名为 test1.php 的文件,它只是简单地回显它所在的文件夹。

/home/kin/www/ipb/_membadmin 中有一个名为test.php 的文件 它只有一行....

require_once 'Zend/test1.php';

当您运行它时,正如您所料,它会回显来自test1.php 的行 /home/kin/www/ipb/_membadmin/Zend

如果您随后将 /home/kin/www/ipb/_membadmin/Zend 重命名为其他名称(所以 'include' 语句找不到它),然后再次运行test.php,它应该 (我认为)在/home/kin/www/lib/Zend 中回显文件,因为 php include_path 设置为包括/home/kin/public_html/libphpinfo.php 确认)。 ...但事实并非如此。

为什么不呢?如果存在/home/kin/public_html/lib 的包含路径,则 肯定的

require_once 'Zend/test1.php';

应该指向/home/kin/www/lib/Zend。在旧服务器上可以!

我一定遗漏了一些明显的东西,但我不知道是什么!

有什么想法吗? 谢谢

【问题讨论】:

  • 能否请您提供get_include_path() 在这两种情况下的内容以及输出
  • 有趣。如果我在新服务器上运行 get_include_path(),我会得到
  • 有趣。如果我在新服务器上运行 get_include_path() ,我会得到 .:/usr/lib/php:/usr/local/lib/php:/home/public_html/lib 但是如果我从同一个地方运行 phpinfo ,'核心' 部分将 include_path 报告为 .:/usr/lib/php:/usr/local/lib/php:/home/kin/public_html/lib 在旧服务器上,get_include_path 和 phpinfo 都报告 /home/kin/public_html/lib 所以为什么新服务器缺少路径中的“亲属”??

标签: php


【解决方案1】:

在您刚刚给出的诊断之后,现在似乎很清楚某些东西正在覆盖环境路径。

您的代码中必须有一些行调用 set_include_path。是否有任何尚未检查的 Zend 特定代码正在运行?那个丢失的目录清楚地将罪魁祸首描绘成流氓set_include_path()

【讨论】:

  • 我会检查的 - 但它与刚刚从旧服务器复制的新服务器上的代码完全相同!
  • 这确实很奇怪。我在分析配置问题方面不是很有经验。我必须承认我被难住了,唯一的其他途径是检查 php.ini 并查看设置是否正确,但我认为你已经这样做了 TT 这是设置路径 ini_set('include_path', '/usr/lib/pear'); 的唯一其他方法除此之外,我没牌了
  • 无论如何感谢您的想法。至少我现在大致知道问题出在哪里,即使不是什么原因造成的!
猜你喜欢
  • 2016-10-04
  • 2022-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多