2009-11-21 66 views
0

我有一個名爲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.phpinclude()聲明不起作用。 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()創建),當兩者在相同的文件夾?

我知道的文件之間的唯一區別:

  1. 所有者可能是不同的(不會result.php用戶nobody產生的呢?)
  2. 權限是原來不同。 FTP'd文件(工作)是0775,而使用fwrite()創建的文件(包括不工作)具有664,並且被generator.php修改爲0775
  3. 工作test.php文件在Mac上用Smultron編輯並通過FTP上傳,而result.phpfwrite()在Linux上由generator.php創建,由瀏覽器調用。
+0

您是否嘗試過使用FTP瀏覽器下載result.php並手動檢查它們是否相同?另外,當您訪問result.php時(無論是在頁面上還是在日誌中),您是否會遇到任何錯誤? – 2009-11-21 01:01:57

+0

我實際上從result.php中截取了兩行代碼(通過FTP獲取它)並創建了test.php .. 另外,如果我用'require'替換'include',那麼它只是停在那句話上。 – Pranab 2009-11-21 02:42:12

+0

文件在執行之前是否關閉?另外,我們可以看到兩個生成的文件嗎? – wallyk 2009-11-21 00:58:45

回答

0

當PHP4安全模式開啓時,result.php,正在寫另一個UID,不可不訪問所包含的文件,屬於另一個UID 。

安全模式限制生效。該腳本,其UID是48不允許訪問 /var/www/vhosts/example.com/httpdocs/ads/sidebar_top.php通過UID 10010 擁有/無功/網絡/ v主機/ example.com /的httpdocs /結果/結果。上線130

PHP我解決了這個打開php.ini並改變safe_mode_gid = On,並加入我的包括目錄safe_mode_include_dir

我還必須重新啓動Apache以使更改生效。

0
fwrite($resultfile, '<?php include($_SERVER["DOCUMENT_ROOT"] . "/inc/footer.php"); ?>' . "\n"); 

你有一個額外的「在那裏,我認爲

+0

這是一個多餘的連接,但我認爲這與問題無關。 – Pranab 2009-11-21 01:38:26