【问题标题】:Error while trying to use dynamic require links in php尝试在 php 中使用动态要求链接时出错
【发布时间】:2011-11-10 22:14:52
【问题描述】:

我正在尝试使用代码require $_SERVER['DOCUMENT_ROOT'].'/resources/mysql.php'; 来包含文件/resources/mysql.php(相对于root)。

在我的电脑上这可以正常工作,没有问题,但是我的网站用户抱怨除了根目录(/index.php)之外的每个页面都无法加载并出现错误

Fatal error: require() [function.require]: Failed opening required '/home/website/public_html/resources/mysql.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/website/public_html/website/events/index.php on line 2

为什么这仅在某些计算机上失败。我试图在我的计算机上复制该问题,即使在清除了我的浏览器和 DNS 缓存后,我也无法发生此错误。我做错了什么,有没有更好的方法来动态包含 php 文件?

【问题讨论】:

  • 你为什么不能像这样定义你的 url:define('BASE_URL', 'yoursite.com/');在你的配置文件中,然后使用 BASE_URL.'/resources/mysql.php/' ?

标签: php dynamic hyperlink require


【解决方案1】:

这看起来很奇怪,您可以访问该网站,但有些人却不能。

你可以使用(如果你在 php > 5.3 中):

__DIR__ 

你也可以使用:

dirname(__FILE__);

当您通过 CLI 运行脚本时,请注意 DOCUMENT_ROOT 不可用(我认为)

【讨论】:

  • 显然我不能在另外 8 小时内发布我自己的答案,所以我会在这里发布:
  • 我的网站被设置为另一个网站的插件域。收到错误的人使用的是原始网站目录而不是插件域。无论您是在插件域还是原始网站目录中,PHP 所认为的根目录都会发生变化,从而使所有文件链接无效
猜你喜欢
  • 1970-01-01
  • 2015-06-02
  • 1970-01-01
  • 2013-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-16
相关资源
最近更新 更多