2010-03-11 22 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'); ?>