Ошибка PHP & Apache - где это показано? - PullRequest
2 голосов
/ 07 июля 2010

Я использую PHP с Apache локально на моем ПК в Windows.
Скрипт загружает файлы на сервер.
Если размер файла превышает upload_max_filesize, определенный в php.ini, или превышен max_execution_time, файл не загружается на сервер, и я не вижу сообщения об ошибке.
У меня вопрос, где я могу увидеть, что было сообщение об ошибке, которое остановило загрузку файла?
Можно ли отобразить соответствующее сообщение для пользователя?
Я был бы признателен за пример кода. Спасибо!

Ответы [ 4 ]

1 голос
/ 07 июля 2010

См. Эту страницу: Объяснение сообщений об ошибках для информации.Короче говоря, вы можете получить сообщения об ошибке загрузки файла из $_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 исправил меня ( см. Его ответ для получения дополнительной информации ), это фатальная ошибка и обычно не может быть перехвачена в PHP, хотя я нашел этот другой поток , который ссылается на этот пост , в котором представлен возможный метод выявления фатальных ошибок.

Также см. документацию для set_time_limit .

1 голос
/ 07 июля 2010

Если вы хотите зафиксировать ошибку самостоятельно, посмотрите на функцию set_error_handler.

0 голосов
/ 07 июля 2010

Если размер файла превышает upload_max_filesize, в PHP не возникнет ошибка.Массив $_FILES будет просто включать эту информацию.

max_execution_time вызывает фатальную ошибку, поэтому вы не можете ее перехватить и отобразить что-то приятное для пользователя.Обычно это не происходит во время загрузки файла, так как это ручная работа, принятая сценарием php, и этот сценарий не начнет выполняться до тех пор, пока файл не будет полностью передан.ошибок журнала.

0 голосов
/ 07 июля 2010

Вы можете изменить настройки сервера php.ini или изменить их для каждого приложения.

Настройка на стороне сервера: (измените файл php.ini и измените error_reporting на)

error_reporting = E_ALL & E_NOTICE & E_STRICT

Для настройки времени выполнения: добавьте следующее в самом верху вашего приложения:

error_reporting(E_ALL & E_NOTICE & E_STRICT);
...