我对此有个问题:
我得到了文件xxx.php,我在其中解析了一个文件:$config‘’etc‘= parse_ini_file('config/config.txt');
一切都很好,直到我使用require_once("lang.inc.php");将xxx.php文件包含到yyy.php文件中
然后我收到一条消息: Warning: parse_ini_file(config/config.txt):无法打开流:没有这样的文件或目录...
当我改变的时候;
$config‘’etc‘= parse_ini_file('config/config.txt');
至
$config‘’etc‘= parse_ini_file('../config/config.txt');
那么我的yyy.php可以正常工作,但是xxx.php不能...我被困住了。
请帮帮我。
发布于 2011-08-06 15:25:09
如果可以从不同的目录调用(或请求) PHP脚本,请尝试使用绝对文件路径。例如,在example.com/one.php下执行的PHP脚本的当前目录将不同于example.com/folder/two.php。
您对的更改
$config['etc'] = parse_ini_file('../config/config.txt');仍然是相对的,除了这次只是“比当前目录> config >config.txt高一个目录”,而不是以前,你在相同的当前目录中查找。
一般的修复方法是执行以下操作:
$root = $_SERVER['DOCUMENT_ROOT'];
// ... code ...
$config['etc'] = parse_ini_file($root . '/config/config.txt');使用CLI域可能会有问题,但在大多数情况下应该没问题(比如DOCUMENT_ROOT不是在DOCUMENT_ROOT下定义的)。此外,检查DOCUMENT_ROOT是否有尾部斜杠,即使标准中没有,一些主机可能会包含尾部斜杠。如果是这样,请删除文件路径开头的斜杠。
发布于 2011-08-06 15:24:55
您应该使用绝对路径或从yyy.php到config.txt的路径
要获得绝对值1,可以使用$_SERVER['DOCUMENT_ROOT']或__FILE__常量
发布于 2011-08-06 15:29:30
也许是因为你的文件层次结构看起来像这样?
/
- file/
-- config/
---config.txt
--- yyy.php
- xxx.phpxxx.php和yyy.php不在同一目录中。当您在yyy.php中包含xxx.php时,parse_ini_file将从yyy.php透视图读取文件。这就是您需要更改目录的原因,因为当您包含一个文件时,它的所有目录读取都会更改。
当然,解决方案是由其他人编写的(使用绝对路径),或者您也可以将文件移动到相同的目录。我只是为了完整的解释而写这篇文章。
编辑:
当然,我只是在推测您的文件层次结构。试着想象一下文件的层次结构,看看xxx.php和yyy.php是否不在同一个目录中。这可能就是问题所在。
EDIT 2:我已经尝试了你在问题中写的情况,它工作起来没有问题。这是我写的代码:
xxx.php:
<?php
$config = parse_ini_file('config/config.txt');yyy.php:
<?php
require_once "xxx.php";文件层次结构:
/
- config/
-- config.txt
- xxx.php
- yyy.php工作得很好。也许您的yyy.php包含在另一个文件中,并从该文件中调用?
https://stackoverflow.com/questions/6965402
复制相似问题