|
|
|
| Скрипт нормально отрабатывает под Денвером и наотрез отказывался работать на хостинге.
Быстренько разобрался, что дело в настройках safe_mode = on и как следствие, не работало CURLOPT_FOLLOWLOCATION.
Собственно вопрос (катастрофически не хватает времени на изучение всего что нужно, если можно коротенький ликбез, на несколько строчек).
Как "правильно" safe_mode = on или safe_mode = Off, или общепринято, если так можно выразиться.
И чем чреват тот или иной вариант. И на что ещё обратить в настройках (виртуальный выделенный сервер).
Да, ещё.. Когда на Денвере смоделировал ситуацию, включил safe_mode, то
получил два Warning:
set_time_limit() [function.set-time-limit]: Cannot set time limit in safe mode in Z:\***\www\read_news.php on line 25
curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION cannot be activated when in safe_mode or an open_basedir is set in Z:\home\***\www\read_news.php on line 115
Но на хостинге их не было, несмотря на то, что в начале скрипта прописано error_reporting(E_ALL | E_STRICT);
Что не так? В том смысле, почему ошибки на хостинге не выводились? | |
|
|
|
|
автор: h (09.09.2009 в 17:09) |
|
|
для: mikha
(09.09.2009 в 10:11)
| | >почему ошибки на хостинге не выводились
тому может быть много причин, error_reporting() только выставляет уровень ошибок
на которые должна возможна реакция сервера,
это то-же что ini_set('error_reporting', '2047');
или в htaccess такая строка php_value error_reporting 2047
константы содержат такие значения
1 E_ERROR
2 E_WARNING
4 E_PARSE
8 E_NOTICE
16 E_CORE_ERROR
32 E_CORE_WARNING
64 E_COMPILE_ERROR
128 E_COMPILE_WARNING
256 E_USER_ERROR
512 E_USER_WARNING
1024 E_USER_NOTICE
2047 E_ALL
2048 E_STRICT
4096 E_RECOVERABLE_ERROR
|
кроме error_reporting , ещё несколько значений и флагов (php_flag может иметь только значение On или Off) php. ini влияют обработку ошибок,
нужно это рассматривать ещё и как вывод в error. log - файлы, (это даже практичнее )
display_errors
log_errors
ignore_repeated_errors
ignore_repeated_source
track_errors
и ещё куча настроек php , которое кроме того что можно собрать с какими-угодно функциями
можно ещё и конфигурировать например запретив их использовать (disabled_functions),
но и это ещё не всё ,) , php чаще работает как модуль апаче, т.e в процесс apache , подгружается вся библиотека с функциями php , и они просто вызываются когда нужно.
там тоже есть настройки связанные с ошибками , например
ErrorLog
LogLevel
и тоже можно собрать апаче по разному
вобщем смотрите в phpinfo (насчёт disabled_functions тоже) , пробуйте делать htaccess например
php_flag display_errors On
php_flag safe_mode Off
| , снова смотрите в phpinfo
, если не помогает , смотрите FAQ хостинга , и потом спрашивайте техподдержку как у них выключается safe_mode | |
|
|
|
|
|
|
|
для: h
(09.09.2009 в 17:09)
| | Выключить как раз не проблема (safe_mode), прямо в ISPmanager.
Завтра, с утра (у нас ужё ночь), на свежую голову, осмыслю то что вы мне написали.
Спасибо большое. | |
|
|
|
|
автор: h (09.09.2009 в 17:20) |
|
|
для: mikha
(09.09.2009 в 10:11)
| | забыл сказать что если php выполняется как модуль, то всё-равно он просто запускается как дочерний процесс того-же апаче | |
|
|
|