2010-03-11 87 views
1

我在远程服务器上包含文件时出现问题(但是在本地Windows PHP + Apache配置中工作正常......)。include()在从包含文件调用时无提示失败

index.php文件的内容:

<?php 

include("Dir1/File1.php"); 

?> 

内容方向1/File1.php的:

<?php 

include("File2.php"); 
include("File3.php"); 

echo("<p>File1 include done.</p>"); 

?> 

当我尝试包括来自包含文件的文件像这样发生

问题Dir1/File2.php的内容

<?php 
echo("<p>File2 include done.</p>"); 
?> 

方向1/File3.php

的内容
<?php 
echo("<p>File3 include done.</p>"); 
?> 

File2.php和File3.php没有得到评估,但是当我改变例如File2.php到File99.php(一些不存在的文件),我得到文件不存在的标准警告。

但是,当我改变方向1/File1.php的内容,包括像这样的文件:“”

<?php 

include("Dir1/File2.php"); 
include("Dir1/File3.php"); 

echo("<p>File1 include done.</p>"); 

?> 

然后文件得到评估...

+1

待办事项你有权访问远程服务器上的php.ini文件? include_path设置为什么? – 2010-03-11 00:25:59

回答

1

听起来像是你没有(当前文件夹)包含在你的路径中。你应该修改你的php.ini文件来添加它。您可以通过使用一个完整的路径做

<?php 
phpinfo(); 
?> 
+0

远程include_path中的值是: :/ usr/lib中/ PHP:在/ usr/local/lib目录/ PHP 本地的版本是:。 ; C:\ PHP5 \梨 我不认为这个问题是因为PHP知道包含文件的位置(因为如果将包含文件更改为某个不存在的文件,它会引发警告)。我不知道如果PHP可以找到文件,它不会评估它... – Stazh 2010-03-11 00:38:47

+0

@Stazh,也许你有与File1.php相同的目录名为File2.php和File3.php的空白文件。从Linux命令行执行“找到File2.php”,并查看服务器上是否存在该文件的多个副本。 – 2010-03-11 12:58:13

+0

不,我没有,我检查过。 – Stazh 2010-03-11 22:31:11

0

尝试找出你的生活和测试服务器上的价值包括代替:

include(dirname(__FILE__) . "/Dir1/File3.php"); 
+0

当我使用完整路径时,它可以正常工作,但是我有很多文件要更改,然后......这是太多的工作。另一方面,为什么它在我的本地配置和我迄今为止使用的其他所有远程服务器上都能正常工作。问题显然是特定的远程服务器。 – Stazh 2010-03-11 00:43:18

0

这个屡试不爽对我来说:

<?php require_once($_SERVER['DOCUMENT_ROOT'] . '/path/to/File3.php'); ?>