【问题标题】:require_once not working on live serverrequire_once 在实时服务器上不起作用
【发布时间】:2014-04-11 15:01:00
【问题描述】:

我的情况是 php 行在 localhost 上工作正常,但在实时服务器上却不行,即使我有相同的文件和文件夹结构。

require_once '/../Renderer.php';

我在实时服务器上遇到的错误是:

警告:require_once(/../Renderer.php):打开流失败:否 这样的文件或目录在 /home2/attafsir/public_html/balaghatoalquran/production/wp-content/themes/twentyten/Text/Diff/Renderer/unified.php 第 19 行

致命错误:require_once():需要打开失败 '/../Renderer.php' (include_path='.:/usr/php/54/usr/lib64:/usr/php/54/usr/share/pear') 在 /home2/attafsir/public_html/balaghatoalquran/production/wp-content/themes/twentyten/Text/Diff/Renderer/unified.php 第 19 行

我花了很多时间试图找出这种行为背后的原因,但无济于事,感谢您的帮助。

PS:我已经和我的主机验证了 PEAR 是否在 php.ini 中安装和配置,他们向我确认了这一点。 (由于代码使用的是 PEAR 包)

解决方案: 解决方案是公认的答案,但我想注意到虽然实时服务器上的问题已解决但破坏了本地主机上的功能。这是一个临时解决方案,因为最好的办法是在本地和实时服务器上拥有相同的代码。当我找到它时,我会回来发布完整的解决方案。随时欢迎您的建议。

【问题讨论】:

  • 这意味着文件不存在。检查文件 renderer.phpRenderer.php 的实际名称是什么,因为 unix 机器区分大小写
  • @Guns,文件名为Renderer.php。谢谢你的评论,不幸的是这并不能解决问题。
  • 您没有使用正确的文件位置。
  • 它也可能与windows中的\和linux中的/有关。

标签: php wordpress pear


【解决方案1】:

/ 是文件系统的根,然后您尝试使用.. 上一级。那不存在,所以你得到一个错误。

您确定不想要相对路径吗?

如果您希望它相对于网络服务器的根(不是文件系统的根,除非出现严重错误),请使用类似:

$_SERVER['DOCUMENT_ROOT'] . '/../Renderer.php'

【讨论】:

  • 我从您的回答中得到启发,找到了解决方案(不幸的是,它破坏了 localhost 上的函数)。
  • @whitelettersandblankspaces 如果您的本地网络服务器设置正确,$_SERVER['DOCUMENT_ROOT'] 不应该为您提供网站的根文件夹。
  • 你说什么是合乎逻辑的,但我仍然不明白为什么我应该在同一个文件中放置不同的代码行,同时从 localhost 传递到 live。这种行为除了 @ 之外从未出现在整个网站中987654326@.谢谢您的宝贵时间
  • 如果您使用的是 html 链接,/ 是您的文档根目录。在 php 中,它是文件系统根目录。尝试更改为 include_once、include 或 require,您仍然会遇到同样的问题。
  • @whitelettersandblankspaces 可能是 Windows 和 linux 之间的目录分隔符问题,请参见此处的示例:stackoverflow.com/questions/4178263/…
【解决方案2】:

试试吧:

require_once '../Renderer.php';

【讨论】:

  • 感谢您的宝贵时间,不幸的是,这并不能解决问题
  • 嗯,你可以验证Renderer.php 在这里:/home2/attafsir/public_html/balaghatoalquran/production/wp-content/themes/twentyten/Text/Diff/Renderer.php ?
  • 根据我在托管帐户中的文件管理器,文件的位置是准确的并且文件存在那里
  • @whitelettersandblankspaces 在托管帐户中 / 是您帐户的根目录,您的文件可能在 public_html httpdocs 等中。您使用谁来托管?
【解决方案3】:

我面临同样的问题enter image description here将您当前版本的 PHP 更改为 PHP 5.3

【讨论】:

    【解决方案4】:

    您不能使用“/../Renderer.php”。要么是 '../' 表示上一个文件夹,要么是 '/' 表示根目录。

    【讨论】:

    • 不幸的是,这不起作用。只需要一次'/../Renderer.php';有效,但仅在本地主机上
    • 您可能有基于 Windows 的本地主机。服务器配置也不同。检查文件的路径。
    • 是的,我同意你的观点,这在逻辑上是原因(本地主机上的 Windows 和实时服务器上的 Linux)
    【解决方案5】:

    删除第一个斜线并尝试:

    require_once '../Renderer.php';
    

    或者

    require_once '../../Renderer.php';
    

    哪一个有效取决于您的文件结构。

    【讨论】:

    • 不幸的是,这不起作用。只有require_once '/../Renderer.php'; 有效,但只能在本地主机上使用
    猜你喜欢
    • 1970-01-01
    • 2018-06-08
    • 1970-01-01
    • 2016-04-16
    • 2016-03-20
    • 1970-01-01
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多