【问题标题】:PHP include statement different between serversPHP include语句在服务器之间不同
【发布时间】:2013-11-15 23:09:23
【问题描述】:

在 win2008/IIS7 服务器上工作,这个 php include 语句是有效的:

include('/path/file.php');

转移到共享的 Linux CPanel 服务器,它不是。我必须这样做:

include('path/file.php');

当我第一次编写代码时,我的印象是开头的/ 意味着从访问初始文件的根文件夹开始。这是可以在 .ini 文件中设置的东西吗?它是特定于 PHP 版本的吗?

【问题讨论】:

    标签: php path include include-path


    【解决方案1】:

    IIS中的第一个/指的是域/localhost的根文件夹。例如,您可以使用浏览器访问该页面,如下所示:http://localhost/path/file.php

    第二种形式,没有/,表示该URL是相对于包含file.php的页面文件夹的相对路径,进入子文件夹路径并在那里找到该文件。

    我认为机器之间的文件夹结构不同:在unix机器上,它部署在:http://www.youdomain.com/somefolder/HERE

    【讨论】:

      【解决方案2】:

      如果你说它无效时得到的错误是file cannot be found, 这是因为 PHP 会根据 php.ini 中的 include_path 配置来确定文件的搜索。

      您可以在以下位置了解更多信息: http://www.php.net/manual/en/ini.core.php#ini.include-path

      实际上/ 作为目录分隔符甚至不可靠。您应该使用DIRECTORY_SEPARATOR 常量。

      要解决这个问题,您需要将您的 include_path 修改为:

      Unix

      include_path=".:/path"
      

      窗户

      include_path=".;c:\path"
      

      重写你的代码,

      include('file.php');
      

      【讨论】:

        【解决方案3】:

        该目录将与您执行 include 或 require 调用的 *.php 文件相关。

        在上述情况下,对于“path/file.php”。我假设您包含“path/file.php”的文件(比如说 index.php),该文件应该与“path”位于同一目录中。

        【讨论】:

          猜你喜欢
          • 2015-01-02
          • 2018-04-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-03
          相关资源
          最近更新 更多