Очень часто вылетает ошибка вида:
* warning: set_time_limit() has been disabled for security reasons in /var/www/login/example.site/includes/common.inc on line 1982.
* warning: set_time_limit() has been disabled for security reasons in /var/www/login/example.site/modules/gsitemap/gsitemap.module on line 640.
* warning: set_time_limit() has been disabled for security reasons in /var/www/login/example.site/modules/image/contrib/image_import/image_import.module on line 173.
Все в принципе работает и так нормально,
но меня эти warning`и просто бесят. Я абсолютно не силен в грамоте MySql и PHP, но судя по написанному выше у хостера отключена эта функция set_time_limit() вообще. Обратился с запросом в сапорт хостера на что мне ответили:
Зачем вам тайм-лимит больше 600 секунд?
Это очень большое время,
врядли правильно работающий сайт будет что-то делать более 10 минут.
Я полез в средину модулей, где обнаружил такой код (gsitemap.module):
Т global $base_url;
if (!ini_get('safe_mode')) {
set_time_limit(240);
}
$range = gsitemap_get_c....
и в common.inc:
// If not in 'safe mode', increase the maximum execution time:
if (!ini_get('safe_mode')) {
set_time_limit(240);
}
// Fetch the cron semaphore
$semaphore = vari...
Т.е., судя из ответа сапорта, set_time_limit() работает (но не факт), тогда какие 600? у меня ведь только 240... И у меня вызрел зловещий план просто-напросто закомментировать эту строку с set_time_limit(), если уж она ни на что не влияет, а только лишь светит мой логин разной контре.
Вопрос знатокам мой план верен? Если да, то как правильно закомментировать и что именно (только строку или что-то еще)? Или у вас есть свой вариант решения этой проблемы?
Комментарии
Функция set_time_limit устанавливает максимальное время выполнения скрипта. Нормальный скрипт, отдающий данные клиенту, выполняется не больше секунды, так что в саппорте тебе дали правильный ответ.
То что ты закомментируешь соответствующие строки в скриптах Друпала врядли повлиеяет на наличие/отсутствие ошибок, так как настройки веб-сервера имеют более высокий приоритет над настройками задаваемыми внутри скрипта, хостер вообще может запретить смену максимального времени выполнения скрипта пользователем.
Функция drupal_cron_run() связана с запуском крона. У тебя, случайно, не включен модуль, который запускает скрипты для крона после захода пользователя на сайт?
Функция set_time_limit() в ваших примерах срабатывает при установленном режиме safe_mode. Что, у вашего хостера включен этот режим?
Если все работает, но только бесят предупреждения - поставьте "php_value error_reporting 7" в .htaccess. "Проверено Занусси..."
TO vadbars@drupal.org К сожалению Занусси на этот раз подвела... у меня эта строка была прописана и проблемы не решала. На счет safe_mode у хостера я не в курсе.
TO Ромка Видимо хостер действительно запретил использование и переопределение set_time_limit(), а ее вызов и приводил к ошибке. Я на свой страх и риск закомментировал строку с вызовом set_time_limit() во всех модулях и это проблему разрешило. Так что ошибки больше не появляются, даже при запуске cron.
наоборот, при выключеном, при включенном safe mode set_time_limit не работает вообще
2автор пока работает - можете смело закомментировать, скорее всего у хостера просто запрещена эта функция... только почаще делайте бакап базы данных - если скрипт прервется при ее обновлении - ничего хорошего не выйдет