我正在Windows上的PC上本地运行PHP
脚本将文件上传到服务器
当文件大小超过upload_max_filesize
中定义的php.ini
或超出max_execution_time
时,文件不会上传到服务器,我也看不到任何消息错误。<登记/>
我的问题是,我可以看到阻止文件上传的错误消息是什么?
是否可以向用户显示适当的消息?
我会很感激代码示例。谢谢!
答案 0 :(得分:1)
如果您希望自己捕获错误,请查看set_error_handler
函数。
答案 1 :(得分: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提供了一种可能的致命方法错误。
答案 2 :(得分:0)
您可以更改php.ini服务器设置,或更改每个应用程序。
服务器端设置:(修改php.ini文件并修改error_reporting)
error_reporting = E_ALL & E_NOTICE & E_STRICT
对于运行时设置:在应用程序的最顶层添加以下内容:
error_reporting(E_ALL & E_NOTICE & E_STRICT);
答案 3 :(得分:0)
如果文件超过upload_max_filesize
,则不会在PHP中引发错误。 $_FILES
数组只包含此信息。
max_execution_time
会引发致命错误,因此您无法捕获它并向用户显示一些不错的内容。它通常不会在文件上传期间发生,因为它是php脚本所采取的驯服,并且该脚本在文件完全传输之前不会开始执行。
您可以在Apache的常规错误日志中看到错误。