我有一個名爲generator.php
的文件,它使用fwrite()
在服務器(Apache,PHP4)上創建result.php
。由fwrite()創建的文件中包含()的PHP4 PHP4問題
result.php
中的其中一行是PHP include()
聲明。
所以,在generator.php
:
if (!is_file($fname)){
$resultfile = fopen($current_path . "/" . $fname, "w+");
}
fwrite($resultfile, '<?php include($_SERVER["DOCUMENT_ROOT"] . "'. '/inc/footer.php"); ?>' . "\n");
fclose($resultfile);
chmod($current_path . "/" . $fname, 0755);
而且在result.php
:
<h2>Sponsored Links</h2>
<!-- begin sidebar_top ad -->
<?php echo $_SERVER['DOCUMENT_ROOT'] . "/ads/sidebar_top.php" . "<hr />";
include($_SERVER['DOCUMENT_ROOT'] . "/ads/sidebar_top.php"); ?>
<!-- end sidebar_top ad -->
但是,當我在瀏覽器中訪問result.php
是include()
聲明不起作用。 echo語句的確如此,所以我知道路徑是正確的。
另一個test.php
具有相同的代碼,我使用FTP上傳到相同的文件夾,工作正常。
通過FTP恢復時,兩個文件中的代碼都相同。
在test.php
:(作品相呼應,包括正確的。)
<?php
echo $_SERVER['DOCUMENT_ROOT'] . "/ads/sidebar_top.php" . "<hr />";
include($_SERVER['DOCUMENT_ROOT'] . "/ads/sidebar_top.php");
?>
任何想法,爲什麼include()
在test.php
工作(手動創建),而不是在result.php
(使用fwrite()
創建),當兩者在相同的文件夾?
我知道的文件之間的唯一區別:
- 所有者可能是不同的(不會
result.php
用戶nobody
產生的呢?) - 權限是原來不同。 FTP'd文件(工作)是
0775
,而使用fwrite()創建的文件(包括不工作)具有664
,並且被generator.php
修改爲0775
。 - 工作
test.php
文件在Mac上用Smultron編輯並通過FTP上傳,而result.php
由fwrite()
在Linux上由generator.php
創建,由瀏覽器調用。
您是否嘗試過使用FTP瀏覽器下載result.php並手動檢查它們是否相同?另外,當您訪問result.php時(無論是在頁面上還是在日誌中),您是否會遇到任何錯誤? – 2009-11-21 01:01:57
我實際上從result.php中截取了兩行代碼(通過FTP獲取它)並創建了test.php .. 另外,如果我用'require'替換'include',那麼它只是停在那句話上。 – Pranab 2009-11-21 02:42:12
文件在執行之前是否關閉?另外,我們可以看到兩個生成的文件嗎? – wallyk 2009-11-21 00:58:45