【问题标题】:PHP Include Path with Mod_RewritePHP 包含带有 Mod_Rewrite 的路径
【发布时间】:2011-05-02 12:15:23
【问题描述】:

我一直在尝试找到一种“简单”的方法来在我的 PHP 文档中包含受 mod_rewrite 地址更改影响的文件。

目前我们的 config.php 文件位于 public_html/lib/config.php 中,我尝试做的是 include('lib/config.php') 但它在地址被 mod_rewrite 更改的页面上出错。

例如"http://www.example.com/user-profile.php?user=123" 可以使用include('lib/config.php')

但是

“http://www.example.com/user/123”使用include('lib/config.php') 找不到文件。

有没有办法为 PHP 文件设置默认包含路径,以便 include('lib/config.php') 可以工作,无论页面位于/重写的位置。

谢谢

【问题讨论】:

  • mod_rewrite 应该对包含路径没有影响(因为这些路径不作为 HTTP 请求处理)。
  • @Mchl 所说的。如果PHP文件相同,则路径相同

标签: php mod-rewrite


【解决方案1】:

使用完整路径,这一定有帮助... 像这样

包括目录名($_SERVER["SCRIPT_FILENAME"]) 。目录分隔符。 'lib/config.php';

(不过这很奇怪,重写灵魂不要弄乱路径,就是不能这样工作,可能错误在别的地方)

【讨论】:

    【解决方案2】:

    包含不受mod_rewrite 的影响。您的问题一定出在其他地方。

    【讨论】:

      【解决方案3】:

      首先,请务必检查其他人提到的有关 mod_rewrite 的问题。

      但要回答您的具体问题:有两种常见的处理方法。

      1) 您可以将包含设置为文件的完整路径。无需过多介绍,如果您要使用 APC,这尤其可取。这就是我在所有应用程序中所做的。

      <?php
      define('BASE_DIR', '/path/to/includes');
      include BASE_DIR . "/lib/config.php";
      ?>
      

      2) 您可以添加修改 php 包含路径。这可行,但在将路径添加到包含路径时会影响性能。

      <?php
      $path = '/path/to/public_html';
      set_include_path(get_include_path() . PATH_SEPARATOR . $path);
      ?>
      

      【讨论】:

        猜你喜欢
        • 2016-11-13
        • 2011-02-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多