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 /子文件夹位于包含路径中,这也不起作用.我希望../config.php是C:/ app / subfolder /../ config.php.也许我没有正确地做到这一点.
在这种情况下,C:/app/subfolder/index.php最初从未打算包含在另一个PHP文件中.但是,我正在构建代码,我希望C:/app/subfolder/index.php仍然能够要求/包含文件,就好像它从未离开过它的位置一样.
我已经读过使用dirname()或__DIR__修复了require()中的相对路径问题,但是我无法更改C:/app/subfolder/index.php中的代码.
有没有办法让这项工作?
解决方法
问题是../调用不会查看include_path,而是查看当前工作目录.通过HTTP URL调用脚本很难理解,但如果可以通过命令行调用脚本则更清楚.
如果您在/usr/angelina/myproject/subfolder/index.php中编写此脚本(注意:在此解释性示例中,我将使用Unix filePath /命令):
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' );
你的脚本将起作用(或者,至少:在我身边它的工作……)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。