【问题标题】:Problems with php.iniphp.ini 的问题
【发布时间】:2011-09-22 00:54:01
【问题描述】:

我认为我的问题与php.ini 文件有关,但可能与其他问题有关。

假设我们有一个站点架构,其中根目录中有另一个名为img 的目录和一个名为index.php 的文件。在目录img 中有一个名为image.jpg 的文件。

所以在index.php 中,要引用图像,我会使用/img/image.jpg

我的问题是,我应该在php.ini 中进行哪些更改才能写成img/image.jpg 而不是/img/image.jpg

谢谢

【问题讨论】:

  • 你应该改变你奇怪的编码怪癖/要求。

标签: apache xampp php


【解决方案1】:

相对路径由 Web 浏览器而非 PHP 解析。无法在 Web 服务器上覆盖此行为。

【讨论】:

    【解决方案2】:

    PHP 无能为力。您基本上可以通过 Apache 重写来做到这一点,但仅使用绝对路径更有意义。您不应该尝试混合绝对路径和相对路径,因为它只会在将来给您带来问题。在路径前面添加“/”有什么问题?

    不仅如此,它还会让那些试图调试你的代码的人感到困惑,因为你的所有相对路径在 Apache 中都变成了绝对路径。

    【讨论】:

    • 事情就是这样。我第一次安装了 xampp,我注意到我的网站在网上运行得很好,但在本地使用 xampp 并不能很好地运行,显然它与 / 有关。
    • 这是因为 Web 服务器使用一个 Web 根目录,所有文件都应该在其中,而您的本地计算机,“/”可能意味着任何东西。哇,您正在考虑这样做只是为了在您的 local 机器上更轻松地测试它?叮叮叮。
    【解决方案3】:

    我的问题是,我应该在 php.ini 中进行哪些更改才能编写 img/image.jpg 而不是 /img/image.jpg

    这是在回答您的问题,但不是您想听到的答案。很简单,我们先列出ini设置:

    1. auto_prepend_file(可能与include_path结合使用)

    仅此而已。它是如何工作的:

    在 php 脚本前添加 ini 指令。在该文件中,您 start output 使用您自己的回调函数进行缓冲:

    function callback($buffer)
    {
      // slash that image that you want to write without slash
      return (str_replace("img/image.jpg", "/img/image.jpg", $buffer));
    }
    
    ob_start("callback");
    

    您现在可以编写 img/image.jpg 而不是 /img/image.jpg,因为您的输出过滤器函数会为您重新编写它。

    但请注意,不要试图用这个来解决错误的问题。适用超文本引用的一般规则,参见Uniform Resource Identifier (URI): Generic Syntax Hypertext Transfer Protocol -- HTTP/1.1 Hypertext Markup Language - 2.0

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-28
      • 1970-01-01
      相关资源
      最近更新 更多