- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
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)中运行它时,它确实在本地运行,从主机访问它。但是,现在我无法在此处运行虚拟机。
那么,为什么这些环境的行为如此不同?
这让我相信必须有一种方法来改变 PHP 解释相对路径的方式。我目前正在处理一个 6GB 以上的 PHP 项目,它的编写方式与上面的示例类似,我真的需要避免重写每个 include/require 语句(使用 dirname(__FILE__)
左右),以及这可能导致的 git merge 冲突。
编辑:我刚刚记得我实际上已经在这里问过这个问题:PHP: include inside included file
最佳答案
像这样用来解析相对URL的路径是由the include_path
configuration option配置的它有一个在运行时设置它的专用函数:set_include_path
.
请注意,要搜索的路径集可能包括.
,表示“当前工作目录”,可以用chdir
设置。并阅读 getcwd
.您可能还需要更改此设置,使 ./foo.php
和 ../foo.php
等显式相对路径起作用。
(我本来建议您改用 __DIR__
或 $_SERVER['DOCUMENT_ROOT']
,但您提到您不想重写现有代码。我仍然会建议任何其他阅读本文的人在每个包含路径相关的地方明确说明,以避免奇怪的错误和动态基础的潜在安全漏洞。)
关于PHP 相对路径 : can I configure it?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34272966/
我是一名优秀的程序员,十分优秀!