@Aamir, вам нужно разрешение от вашего веб-хостинга на изменение конфигурации вашего веб-сервера. Часто они не позволяют вам так менять вещи.
hellozimi
могу ли я изменить upload_max_filesize и max_execution_time в файле htaccess?
Амир,
2
@Col, я не согласен, он хочет вносить изменения на ходу, а не во всем приложении, поэтому он спрашивает, как он может это сделать. И даже если бы он спросил, как он может просто изменить что-то в php.ini, это может быть вопрос новичка, но все же законный вопрос.
Hannes
1
@IulianOnofrei, ладно, просто почувствовал необходимость указать на это: D, но, может быть, если вы не знаете, что это такое, все равно хорошо его поискать… «Те, кто не может извлечь уроки из истории, обречены повторить это» и все такое …
Ханнес
57
Вы также должны иметь возможность делать во время выполнения, используя
НИЗКОЕ глобальное ограничение времени выполнения в основном является хорошей идеей с точки зрения производительности в не очень надежных приложениях. Таким образом, вы можете разрешить этим сценариям работать дольше, чем это необходимо.
ps: не забывайте о post_max_size и upload_max_filesize (как уже было сказано в первом ответе)
Если то, что вам нужно сделать, характерно только для 1 или 2 страниц, я предлагаю использовать set_time_limit, чтобы это не повлияло на все приложение.
set_time_limit(some_values);
но, конечно, эти 2 значения (post_max_size и upload_max_filesize) подлежат исследованию.
вы также можете установить его через функцию ini_set
set_time_limit () не имеет ничего общего с загрузкой файлов
Ваш здравый смысл
1
Это недостаточно точно, полковник Шрапнель. В то время как в средах Unix максимальное время выполнения сравнивается с совокупным временем ЦП, используемым php-потоком, в системах Windows используется абсолютное время. Загрузка происходит в основном в режиме ожидания (IO-Wait). Но, как вы видите, загрузка может остановиться, даже если на это уйдет слишком много времени.
Christoph Strasen,
4
Если вы используете сервер Microsoft IIS , в дополнение к настройкам php.ini , упомянутым другими, вам может потребоваться увеличить настройки времени ожидания выполнения для приложения PHP FastCGI в диспетчере сервера IIS:
Шаг 1) Откройте диспетчер сервера IIS (обычно в разделе « Диспетчер серверов» в меню «Пуск», затем в меню « Инструменты / Диспетчер информационных служб Интернета (IIS)» ).
Шаг 2) Щелкните основное соединение (не относящееся к конкретному домену).
Шаг 3) В разделе IIS найдите FastCGI Settings (показано ниже).
Шаг 4) В нем щелкните правой кнопкой мыши приложение PHP и выберите « Изменить ...» .
Шаг 5) Проверьте таймауты (показано ниже).
В моем случае таймауты по умолчанию были 70 и 90 секунд; первый из которых вызывал ошибку 500 Internal Server Error в сценариях PHP, которая длилась более 70 секунд.
Я знаю, что вы конкретно спрашиваете о тайм-ауте PHP, но, похоже, никто другой не упомянул, что на веб-сервере также может быть тайм-аут, и он может быть очень похож на тайм-аут PHP.
Итак, если вы пробовали:
Увеличьте время ожидания в php.ini, добавив строку: max_execution_time = {количество секунд, т.е. 60 на одну минуту}
Увеличьте время ожидания в самом скрипте, добавив: ini_set ('max_execution_time', '{количество секунд, т.е. 60 для одной минуты}');
И вы проверили с помощью функции phpinfo (), что max_execution_time действительно было увеличено, тогда вы можете попробовать добавить это в .htaccess, чтобы убедиться, что сам Apache не истечет:
Если вы не можете редактировать php.ini (например, на своем сервере), вы можете попытаться изменить параметры php.ini из своего кода php. Пытаться:
ini_set('max_execution_time','NUMBER OF SECONDS TO ALLOW BEFORE TIMEOUT');
Если это не сработает, попробуйте также установить set_time_limit таким же образом, кроме этого, я бы сказал, что ваш единственный вариант - связаться с вашим хостом. Эти настройки нельзя изменить в безопасном режиме.
Ханнес получил это за минуту до того, как я опубликовал, и правильно указывает, что set_time_limit () не должен устанавливаться ini_set, как указано в этом ответе, а путем помещения секунд в скобки. Проголосовал за Ханнеса.
Джон
1
Проверьте, находитесь ли вы в безопасном режиме - если нет - установите ограничение по времени (локальное значение) на то, что вы хотите:
if(!ini_get('safe_mode')){
echo "safe mode off";
set_time_limit(180);// seconds
phpinfo();// see 'max_execution_time'}
* Вы не можете установить ограничение по времени, если включен безопасный режим.
необязательно: если вы установили конфигурацию для php.ini, но по-прежнему не можете загрузить
-это функция php для проверки кода ошибки
$error_type =[];
$error_type[0]="There is no error";
$error_type[1]="The uploaded file exceeds the upload_max_filesize directive in php.ini.";
$error_type[2]="The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.";
$error_type[3]="The uploaded file was only partially uploaded.";
$error_type[4]="No file was uploaded.";//$error_type["5"] = "";
$error_type[6]="Missing a temporary folder. Introduced in PHP 5.0.3.";
$error_type[7]="Failed to write file to disk. Introduced in PHP 5.1.0.";
$error_type[8]="A PHP extension stopped the file upload. PHP does not provide a way to ascertain which extension caused the file upload to stop; examining the list of loaded extensions with phpinfo() may help. Introduced in PHP 5.2.0.";//------------------------------//--> show msg error.
$status_code = $_FILES["uploadfile"]["error"];if($status_code !=0){
echo $error_type[$status_code];exit;}
Чтобы действительно увеличить лимит времени, я предпочитаю сначала получить текущее значение. set_time_limitне всегда увеличивает срок. Если текущее значение (например, от php.iniили ранее установленное) выше, чем значение, используемое в текущем вызове set_time_limit, оно уменьшится. ограничение по времени!
Так что с таким маленьким помощником?
/**
* @param int $seconds Time in seconds
* @return bool
*/function increase_time_limit(int $seconds):bool{return set_time_limit(max(
ini_get('max_execution_time'), $seconds
));}// somewhere else in your code
increase_time_limit(180);
Ответы:
Вам нужно изменить некоторые настройки в вашем php.ini:
Расположение вашего PHP.ini зависит от вашей среды, дополнительная информация: http://php.net/manual/en/ini.list.php
источник
Вы также должны иметь возможность делать во время выполнения, используя
set_time_limit(100);
http://php.net/manual/en/function.set-time-limit.php
или в вашем vhost-config
php_admin_value max_execution_time 10000
НИЗКОЕ глобальное ограничение времени выполнения в основном является хорошей идеей с точки зрения производительности в не очень надежных приложениях. Таким образом, вы можете разрешить этим сценариям работать дольше, чем это необходимо.
ps: не забывайте о post_max_size и upload_max_filesize (как уже было сказано в первом ответе)
источник
Чтобы завершить ответ Ханнеса.
Вам нужно изменить некоторые настройки в вашем php.ini:
Если кто-то хочет ввести безлимит (я не знаю почему, но если хотите), вы можете установить время на 0:
Вам нужно изменить некоторые настройки в вашем php.ini:
И если вы не знаете, где находится ваш php.ini. Вы можете создать файл "name.php" на своем сервере и поместить:
А на своем веб-сайте вы можете увидеть конфигурацию вашего php.ini, и там указано, где он находится.
Редактировать 9 января 2015 г .:
Если вы не можете получить доступ к своему php.ini, у вас есть еще два варианта.
Вы можете установить эту строку прямо в вашем файле "name.php", но я не могу найти upload_max_filesize для этой опции:
Или в ".htaccess"
источник
Если то, что вам нужно сделать, характерно только для 1 или 2 страниц, я предлагаю использовать set_time_limit, чтобы это не повлияло на все приложение.
но, конечно, эти 2 значения (post_max_size и upload_max_filesize) подлежат исследованию.
вы также можете установить его через функцию ini_set
или непосредственно в файле php.ini, как ответ Ханнеса выше, или даже установите его в .htaccess, как показано ниже
источник
В дополнение к приведенным выше ответам вы можете использовать
set_time_limit()
функцию:http://php.net/manual/en/function.set-time-limit.php
передача
0
в качестве аргумента заставит ваш скрипт работать без ограничения по времени.источник
Если вы используете сервер Microsoft IIS , в дополнение к настройкам php.ini , упомянутым другими, вам может потребоваться увеличить настройки времени ожидания выполнения для приложения PHP FastCGI в диспетчере сервера IIS:
Шаг 1) Откройте диспетчер сервера IIS (обычно в разделе « Диспетчер серверов» в меню «Пуск», затем в меню « Инструменты / Диспетчер информационных служб Интернета (IIS)» ).
Шаг 2) Щелкните основное соединение (не относящееся к конкретному домену).
Шаг 3) В разделе IIS найдите FastCGI Settings (показано ниже).
Шаг 4) В нем щелкните правой кнопкой мыши приложение PHP и выберите « Изменить ...» .
Шаг 5) Проверьте таймауты (показано ниже).
В моем случае таймауты по умолчанию были 70 и 90 секунд; первый из которых вызывал ошибку 500 Internal Server Error в сценариях PHP, которая длилась более 70 секунд.
источник
У вас была опечатка: ini_set ('max_input_time', '200M') - набор значений должен быть int, например ini_set ('max_input_time', '200')
источник
Я знаю, что вы конкретно спрашиваете о тайм-ауте PHP, но, похоже, никто другой не упомянул, что на веб-сервере также может быть тайм-аут, и он может быть очень похож на тайм-аут PHP.
Итак, если вы пробовали:
И вы проверили с помощью функции phpinfo (), что max_execution_time действительно было увеличено, тогда вы можете попробовать добавить это в .htaccess, чтобы убедиться, что сам Apache не истечет:
Подробнее здесь: https://www.antropy.co.uk/blog/php-script-keeps-timing-out-des Hit-ini-set/
источник
Сначала проверьте
php.ini
путь к файлуphpinfo()
; а затем изменилPHP.INI
параметры:перезапустил Apache
Примечание : вы также можете использовать команду для поиска
php.ini
в Linuxисточник
Если вы не можете редактировать php.ini (например, на своем сервере), вы можете попытаться изменить параметры php.ini из своего кода php. Пытаться:
Если это не сработает, попробуйте также установить set_time_limit таким же образом, кроме этого, я бы сказал, что ваш единственный вариант - связаться с вашим хостом. Эти настройки нельзя изменить в безопасном режиме.
источник
Проверьте, находитесь ли вы в безопасном режиме - если нет - установите ограничение по времени (локальное значение) на то, что вы хотите:
* Вы не можете установить ограничение по времени, если включен безопасный режим.
источник
необязательно: если вы установили конфигурацию для php.ini, но по-прежнему не можете загрузить
-это функция php для проверки кода ошибки
источник
Вы также можете установить максимальное время выполнения в своем
.htaccess
файле:источник
Чтобы действительно увеличить лимит времени, я предпочитаю сначала получить текущее значение.
set_time_limit
не всегда увеличивает срок. Если текущее значение (например, отphp.ini
или ранее установленное) выше, чем значение, используемое в текущем вызовеset_time_limit
, оно уменьшится. ограничение по времени!Так что с таким маленьким помощником?
См. Также: Получить max_execution_time в скрипте PHP
источник