php – set_include_path()无法使用相对require()
我“需要”一个具有自己的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 /子文件夹位于包含路径中,这也不起作用.我希望../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中的代码. 有没有办法让这项工作? 解决方法
您的问题与set_include_path()范围无关.您的致命错误也会显示实际的include_path,您可以在其中看到添加的路径.
问题是../调用不会查看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' ); 你的脚本将起作用(或者,至少:在我身边它的工作……) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |