2010-07-06 38 views
2

我在Windows上的個人電腦上使用Apache本地運行PHP。
該腳本將文件上載到服務器。
當文件大小大於在php.ini中定義的upload_max_filesize或超過max_execution_time時,文件不會上載到服務器,並且我看不到任何消息錯誤。
我的問題是在哪裏可以看到什麼是阻止文件上傳的錯誤消息?
是否可以向用戶顯示適當的消息?
我將不勝感激代碼示例。謝謝 !PHP和Apache錯誤 - 它顯示在哪裏?

回答

1

見此頁面:Error Messages Explained瞭解詳情。簡而言之,您可以從$_FILES['userfile']['error']獲取文件上傳錯誤消息,其中'userfile'是表單元素的名稱。

或者只是print_r($_FILES);查看當前文件上傳的所有細節。

顯示人類可讀的錯誤消息發送到該用戶可能是一個例子:

switch($_FILES['userfile']['error']) 
{ 
    case UPLOAD_ERR_INI_SIZE: 
     echo 'The uploaded file exceeds the upload_max_filesize directive in php.ini.'; 
    break; 
    case UPLOAD_ERR_CANT_WRITE: 
     echo 'Failed to write file to disk.'; 
    break; 
    // etc ... 
} 

max_execution_time沒有特別文件上傳錯誤。由於troelskn糾正了我(see his reply for more info),這是一個致命錯誤,通常無法在PHP中捕獲,儘管我找到了this other thread,其中引用this post提供了捕獲致命錯誤的可能方法。

另見the documentation for set_time_limit

1

如果您希望自己捕捉錯誤,請查看set_error_handler函數。

0

您可以更改您的php.ini服務器設置,或更改每個應用程序。

服務器端設置:(修改php.ini文件,並修改使用error_reporting到)

error_reporting = E_ALL & E_NOTICE & E_STRICT 

運行系統設置:添加以下在應用程序的頂部:

error_reporting(E_ALL & E_NOTICE & E_STRICT); 
0

如果一個文件超過upload_max_filesize,您不會真的在PHP中引發錯誤。 $_FILES數組將包含此信息。

max_execution_time引發了一個致命錯誤,所以你不能捕捉它並向用戶顯示好的東西。它通常不會在文件上傳過程中發生,因爲它是由php腳本馴服的,並且該腳本在文件完全傳輸之前不會開始執行。

您可以在Apache的通用錯誤日誌中看到錯誤。