- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在“要求”一个文件,该文件有自己的 require() 调用。但是调用 set_include_path() 并不适用于 require() 中的相对路径。不幸的是,我无法控制所需的代码文件。
C:/myapp/index.php - 我的代码
set_include_path(get_include_path() . ';C:/app/subfolder');
require('C:/app/subfolder/index.php');
C:/app/subfolder/index.php - 第三方代码(无控制)
require('../config.php'); // Require file located at C:/app/config.php
结果:
打开失败需要'../config.php' (include_path='.;C:/app/subfolder')
这不起作用,即使 C:/app/subfolder 位于包含路径中。我希望 ../config.php 是 C:/app/subfolder/../config.php。也许我做得不对。
在这种情况下,C:/app/subfolder/index.php 最初从未打算包含到另一个 PHP 文件中。但是,我正在它前面构建代码,我希望 C:/app/subfolder/index.php 仍然能够 require/include 文件,就好像它从未离开过它的位置一样。
我读过使用 dirname() 或 __DIR__ 修复了 require() 中的相对路径问题,但我无法更改 C:/app/subfolder/index.php 中的代码。 p>
有没有办法让它工作?
最佳答案
您的问题与 set_include_path()
scope 无关。您的 fatal error 也显示了实际的 include_path
,您可以在其中看到您添加的路径。
问题是 ../
调用不查看 include_path
,而是查看当前工作目录。这可能很难理解通过 HTTP URL 调用脚本,但如果您可以通过命令行调用脚本就更清楚了。
如果您在 /usr/angelina/myproject/subfolder/index.php
中编写此脚本(注意:在这个解释性示例中,我将使用 Unix filePath/commands):
set_include_path( '/usr/angelina/myproject/subfolder' );
require( '../config.php' );
然后,在终端中,你写:
cd /usr/angelina/myproject/subfolder
php index.php
脚本将被正常执行。但是如果你写:
cd /usr/angelina/myproject
php subfolder/index.php
脚本将失败,即使在您调用的同一脚本中设置了包含路径也是如此。
上面的例子说明你的问题不是包含路径,而是当前工作目录。要解决您的问题,您必须使用 chdir()
更改当前目录。
所以,在 C:/myapp/index.php
中你必须写:
chdir( 'C:/app/subfolder' );
require( 'C:/app/subfolder/index.php' );
并且您的脚本会起作用(或者,至少:在我这边它起作用了...)
关于php - set_include_path() 不适用于相对 require(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35909247/
我遇到了 set_include_path 的问题,我阅读了很多关于该问题的消息,但没有一条对我有用。我在 Debian 上,我的根目录将设置为/home/project/ 所以我尝试了这 4 种不同
我正在“要求”一个文件,该文件有自己的 require() 调用。但是调用 set_include_path() 并不适用于 require() 中的相对路径。不幸的是,我无法控制所需的代码文件。 C
C:\xampp\htdocs 包含 Controller .php 和 ApplicationHelper.php . C:\xampp\htdocs\site 包含 index.php . 这是我
我偶然发现了两个我以前从未在 php 中使用过的函数 set_include_path(); get_include_path(); 我目前正在寻求将 phpseclib 实现到我正在开发的项目中。因
我了解到函数 set_include_path()。一直以来,我在config.php文件中定义了一个常量 define('BASE_PATH', '/var/www/mywebsite/public
我有几个关于 PHP 中的包含路径以及包含文件和/或类的问题。 下面是一段简单的代码片段,我们在其中设置了多个包含路径。我在另一个项目中看到了这个,但我不确定为什么? 在过去 5 年左右的时间里,我从
在 PHP 中,set_include_path 相对于什么?它是 PHP.exe 所在的文件夹吗?是网盘吗?换句话说,set_include_path('/') 或 set_include_path
我是一名优秀的程序员,十分优秀!