2012-02-13 121 views
0

我是新的PHP和我想做一個聯繫表單。PHP包含問題

在我的contact.php文件中,我包含了來自pear郵件包的Mail.php(我已將Mail.php及其郵件文件夾複製到了我的根目錄中,因爲我沒有ssh訪問權限來直接安裝它)。

現在在我的PHP我把這個:

<?php 
if([email protected]_exists('./Mail.php')) { 
    echo 'can not include'; 
} else { 
    include('./Mail.php'); 
} 
//rest of the code 
?> 

對於一些未知的原因,我得到這個:

The website encountered an error while retrieving http://example.com/contact.php. It may be down for maintenance or configured incorrectly. 
Here are some suggestions: 
Reload this webpage later. 
HTTP Error 500 (Internal Server Error): An unexpected condition was encountered while the server was attempting to fulfill the request. 
  • example.com被替換隱藏我的主機

如果我評論包括聲明錯誤不再發生...我不明白我在做什麼錯...我是蘇re,Mail.php和我的contact.php文件在同一個根目錄下。

+1

檢查服務器的錯誤日誌。它很可能會有關於500錯誤消息的更多詳細信息。您在瀏覽器中看到的內容有意含糊不清,因爲500個錯誤可能會泄露應該保持私密的關鍵內部數據。 – 2012-02-13 17:54:43

+0

也許嘗試使用require_once而不是include並查看會發生什麼? – Giannis 2012-02-13 18:08:58

回答

2

嘗試訪問Mail.php directl,您可能啓用了一些Apache證券,這將揭示該問題。

其他問題可以在將有助於是由於權限/所有權等

一些調試信息。

0

看起來你沒有正確包括文件:

<?php 
if([email protected]_exists('./Mail.php')) { 
    echo 'can not include'; 
} else { 
    include('./Mail.php'); 
} 
//rest of the code 
?> 

使用../遞歸即看在彌補Mail.php的一層文件夾。

代碼應爲:

include('../Mail.php') 
1

隨着包括,它會嘗試導入請求的文件。如果失敗,它會繼續,只會產生警告。由於在包含註釋時包含行會消失,因此您將遇到致命錯誤,這意味着Mail.php 包含,但其中包含錯誤。我建議你檢查一下你的錯誤日誌,找出Mail.php有什麼問題。 @Mikhail可能會做些什麼,你可以通過訪問Mail.php找出你的錯誤。

此外,如果我的理解正確,Mail.php在相同的文件夾中與上面顯示的PHP文件相同,那麼您就不需要使用include('./Mail.php')include('Mail.php')應該也一樣。