当前位置:  开发笔记 > 编程语言 > 正文

PHP相对路径:我可以配置吗?

如何解决《PHP相对路径:我可以配置吗?》经验,为你挑选了1个好方法。

tl; dr:如何从当前文件的角度使PHP解释include/require语句中的相对路径?

这是关于PHP中关于相对路径的旧问题的另一个问题.请耐心等待,因为我无法找到任何解决方案.

考虑以下目录树和文件:

[www]:
    index.php
    config.php
    [webroot]:
        home.php

index.php要求home.php,在里面找到webroot:

require('webroot/home.php');

home.php要求config.php,在父目录中找到:

require('../config.php');

我的问题是,这在我的本地开发环境(Ubuntu 14.04 LTS/15.10)中不起作用,而它在生产中运行完美.每个提到的环境都运行Apache 2和PHP 5.
奇怪的是,当我在我的Vagrant VM(Ubuntu 12.04 LTS)中运行它时,它会在本地运行,从主机访问它.但是,现在,我不能在这里运行VM.

那么,为什么这些环境的表现如此不同?
这让我相信必须有一种方法来改变PHP如何解释相对路径.我目前正在使用一个6GB + PHP项目,就像上面的例子一样,我真的需要避免从我那里重写每个include/require语句(使用dirname(__FILE__)左右)所付出的努力,以及这可能导致git合并冲突.

编辑:我记得我实际上已经在这里问过这个问题:PHP:包含内部包含的文件



1> IMSoP..:

用于解析此类相对URL的路径由配置选项配置,该include_path选项具有在运行时设置它的专用功能:set_include_path.

注意,要搜索的路径集可以包括.,表示"当前工作目录",其可以设置chdir和读取getcwd.您可能还需要更改此选项以明确表示相对路径./foo.php../foo.php工作方式.

(我打算建议你使用__DIR__$_SERVER['DOCUMENT_ROOT']代替,但你提到你不想重写现有的代码.我仍然建议其他人阅读这个以明确在每个包含路径相对的地方,以避免奇怪的错误和动态基础的潜在安全漏洞.)


@GuiImamura就像我说的那样,你的工作服务器已经在做这样的默认设置,或者你不需要这样做.您需要做的就是匹配两台服务器之间的配置.
推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有