gpt4 book ai didi

PHP 相对路径 : can I configure it?

转载 作者:可可西里 更新时间:2023-11-01 12:52:11 24 4
gpt4 key购买 nike

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com