【问题标题】:php include() from server root?php include() 从服务器根目录?
【发布时间】:2010-07-16 11:48:12
【问题描述】:

我正在从我的 WAMP 测试环境部署到在线测试...

在本地,我的包含路径是这样的:

include('C/wamp/www...')

如何在我的服务器上找到等效路径?

我尝试使用“/”进入根目录,但出现此错误:

警告: require_once(/test123/mvc/views/txt/index_nav_txt.php) [function.require-once]:未能 打开流:没有这样的文件或目录 在 /home/user/public_html/test123/mvc/views/components/st_footer.php 第 37 行

致命错误:require_once() [function.require]:打开失败 必需的 '/test123/mvc/views/txt/index_nav_txt.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') 在 /home/user/public_html/test123/mvc/views/components/st_footer.php 第 37 行

【问题讨论】:

    标签: php apache


    【解决方案1】:

    你实际上需要:

    require_once("/home/codlife/public_html/test123/mvc/views/txt/index_nav_txt.php");
    

    注意/home/codlife/public_html/的版本

    最初的/带你到服务器的根目录,你的代码位于/home/codlife/public_html/里面

    【讨论】:

      【解决方案2】:

      你是说

      $_SERVER['DOCUMENT_ROOT']
      

      这基本上为您提供了工作网站目录的完整路径,即 c:/wamp/www/(windows) 或 /var/www/vhost/domain.com/httpdocs/ (linux)

      【讨论】:

        【解决方案3】:

        您可能应该阅读 include_path (http://php.net/include_path) - 这通常设置为包含文档根目录(您的网站所在的位置)并且可以更改,这样您就不必重复包含相同的路径。

        【讨论】:

          【解决方案4】:

          如何在我的服务器上找到等效路径?

          你没有找到它——你告诉它它应该在哪里。诚然,当您购买托管软件包时,这并不总是可行的(IME 通常受到严重支持并且几乎没有文档)。

          首先要注意的是,无论代码托管在何处/如何托管,您都应始终使用相对于 php 包含路径上配置的目录的路径(或相对于最初由浏览器请求调用的 PHP 脚本 - '. ' 来自错误中引用的 include_path 的条目)- 绝不是绝对路径。您可以通过以下方式轻松找到:

          <?php
            print ini_get('include_path');
          ?>
          

          从错误信息中引用的路径来看,它似乎是一个POSIX系统。网络服务器看到的文件系统的根目录可能与 FTP 或 SSH 软件看到的根目录完全不同,但它们可能是相同的。

          请注意,如果这是一个共享主机,那么您可能无权将文件放入 /usr/lib/php 或 /usr/local/lib/php - 所以您唯一的选择是使用相对路径- 这会变得非常混乱 -

          您可以对此进行一些巧妙的编码 - 但请查看 Dokuwiki 和 phpmyadmin 等软件包,了解它们如何以可重定位的方式组织包含文件,而不依赖于操作 php.ini 设置。

          或者,您也可以通过 .htaccess 覆盖 include_path,例如

           php_value include_path ".:/home/codlife/public_html:/usr/lib/php:/usr/local/lib/php"
          

          (这会将基本的 include_path 设置为您的文档根目录)

          HTH

          C.

          【讨论】:

            【解决方案5】:

            使用存储以下内容的配置文件:

            $application_root = '/home/code_life/public_html/';
            

            在此文件中使用所有特定于环境的变量或常量。当您在不同的机器上部署应用程序时,您只需更新配置文件。

            例子:

            您的根应用程序中有一个名为 settings.php 的文件夹,您可以在其中定义:

            define('DIR_ROOT', dirname(dirname(__FILE__)) . '/');
            

            现在,在每台机器上,DIR_ROOT 都将成为您应用程序的根目录,您无需进行任何更改。

            【讨论】:

              猜你喜欢
              • 2015-09-02
              • 2013-07-20
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-04-29
              • 2020-08-21
              相关资源
              最近更新 更多