2010-07-06 23 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的通用错误日志中看到错误。