Итак, у PHP есть функция ini_set()
которой многие люди знают и будут использовать для настройки различных параметров конфигурации ( здесь ), чтобы помочь с разработкой и т. Д. Однако эта функция работает только во время выполнения и не будет работать, если есть какие-то фатальные ошибки или скрипт имеет синтаксические ошибки и не может быть проанализирован / скомпилирован.
Поэтому, конечно, нет смысла делать это (из руководства):
http://php.net/manual/en/function.ini-set.php
Примеры
Пример # 1 Установка опции ini
<?php echo ini_get('display_errors'); if (!ini_get('display_errors')) { ini_set('display_errors', '1'); } echo ini_get('display_errors'); ?>
Я не знаю, что я просто что-то пропустил, а php.ini настроен неправильно, но я не получаю ошибок. Для начинающих / юниоров, несомненно, будет много синтаксических ошибок (отсутствующие полуколоны, закрывающие скобки и т. Д.), И упомянутые юниоры будут искать, как включить ошибки, предполагая, что приведенная выше ручная запись правильная, но при повторном запуске их сценарий, увы, не получает ошибок, поскольку скрипт не может быть разобран / скомпилирован в первую очередь.
Я знаю, что вы можете установить display_errors = On
в файле php.ini и перезапустить веб-сервер, чтобы показать все ошибки на экране (используя это в среде разработки, определенно не вживую), но не лучше ли было бы удалить и только настроить файл php.ini для разных уровней ошибок?
Обновить:
Я знаю, что ini_set предназначен не только для отображения ошибок, но код не может быть очень управляемым, если вы вызываете ini_set в определенных скриптах / функциях / файлах и не имеет смысла использовать php.ini для чего-то подобного ?
Обновить
Таким образом, файл ini можно использовать для установки глобальных параметров конфигурации, безусловно, вы использовали бы это для безопасности или оптимизации, однако разработчики все равно могли бы использовать ini_set для переопределения некоторых из этих параметров во время выполнения, что может быть нежелательно
В заключение (@Hanky 웃 Panky):
Почему у меня есть опция отображения ошибок, когда некоторые тривиальные синтаксические ошибки все еще не отображаются?
да, вы правы, что лучше всего удалить эту функцию и настроить файл php.ini только для разных уровней ошибок.
Но это хорошо только в том случае, когда у вас есть только один проект на вашем компьютере. Итак, все его настройки конфигурации вы можете сделать в php.ini. Рассмотрим случай, если у вас есть несколько проектов. если вы не хотите, чтобы какие-то настройки в этом проекте по-прежнему получались от php.ini
Поэтому для некоторых параметров конфигурации рекомендуется установить их на уровне проекта с помощью ini_set () и не будет отражать другие проекты.
ini_set – Устанавливает значение параметра конфигурации. Устанавливает значение данного параметра конфигурации. Параметр конфигурации сохранит это новое значение во время выполнения скрипта и будет восстановлен в конце сценария без использования ini_set (), будут использоваться значения из файла php.ini.
РЕДАКТИРОВАТЬ:
Вы можете найти это полезным:
// Turn off all error reporting error_reporting(0); // Report simple running errors error_reporting(E_ERROR | E_WARNING | E_PARSE); // Reporting E_NOTICE can be good too (to report uninitialized // variables or catch variable name misspellings ...) error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE); // Report all errors except E_NOTICE error_reporting(E_ALL & ~E_NOTICE); // Report all PHP errors (see changelog) error_reporting(E_ALL); // Report all PHP errors error_reporting(-1); // Same as error_reporting(E_ALL); ini_set('error_reporting', E_ALL);