【问题标题】:Warning on Include: Can't Find File In Correct Path?包含警告:无法在正确路径中找到文件?
【发布时间】:2009-02-11 13:52:28
【问题描述】:
Warning: include(/2008/2009/assets/inc/base/error.inc.php) [function.include]:
failed to open stream: No such file or directory in
C:\Program Files\Apache Group\Apache2\htdocs\2008\2009\assets\inc\base\header.inc.php on line 82

在 WAMP 设置中包含文件时,我收到上述错误。 Windows 是否有可能将 /2​​008/ 解释为 c:/2008 而不是实际的 http://localhost/2008

为了提供更多细节,我有一个定义为 ROOT 的常量,我在整个网站上都使用它。 (本例中的 ROOT 设置为 /2008/2009/)。我在图像、链接、css 文件、包含/需要文件等的路径之前使用 ROOT。CSS 和链接正确缩放到 localhost/2008/2009,但找不到包含文件。

任何帮助将不胜感激。

PS php.ini 包含路径定义为:

include_path = C:\Program Files\Apache Group\Apache2\htdocs"

更新

我使用 URL 重写将 item/x 更改为 item-display.php?id=x,文件夹中的这种更改是构建 ROOT 的基础。这使得向浏览器显示的任何内容(imgs、链接等)都可以正常工作,但是内部的任何内容都无法正常工作,因为 item-display.php 实际上是一个文件夹。我将 item-display.php 移动到一个项目文件夹中,这使得客户端和服务器端的操作保持一致。

【问题讨论】:

    标签: php include warnings


    【解决方案1】:

    您使用的是绝对路径而不是相对路径。

    【讨论】:

    • 我的印象是绝对路径在包含中是可以接受的?
    • 它们被接受,但就像“固定值”一样。因此它们没有使用包含路径解析,因为它们已经是绝对的。
    【解决方案2】:

    如果您使用包含路径,则必须指定一个相对 URL,从第一个目录或 ./ 开始。顺便说一句,您应该在一个文件中使用dirname(__FILE__) 之类的东西定义您的路径,该文件在您的项目中的位置不会改变或通过查看服务器。否则,在另一台服务器上安装您的应用程序将会变得不必要地复杂。

    【讨论】:

    • 我认为我们在同一页面上。目前,安装到另一台服务器就像打开 /assets/inc/settings.inc.php 并更改 ROOT 的值一样简单,现在已经在站点范围内完成了。我现在正尝试从 rel 切换到 abs 以回避 URL 重写问题(假目录)。
    猜你喜欢
    • 2013-12-04
    • 1970-01-01
    • 2014-09-12
    • 2017-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多