Я исследовал различные методы и директивы, включая:error_log в том же каталоге, в котором содержатся файлы?
- auto_prepend_file
- .user.ini файлов
- getcwd()
- debug_backtrace()
И я не могу похоже, найдут способ изменить путь к файлу error_log, чтобы войти в тот же путь, что и файл, который был включен/требуется.
Например, скажем, index.php имеет следующую строку:
include('subdir/file.php');
subdir/file.php
Если обнаружена ошибка синтаксиса, заставляя PHP для создания subdir/error_log
, а не поведение по умолчанию создания error_log в том же пути, как index.php
, auto_prepend_file страдает от того же ограничения, что и до указанного файла перед первым скриптом, а не с каждым включенным файлом.
Я осмотрелся и не могу найти законный способ сделать это. Я понимаю последствия служебных издержек, выполняя это, и планирую использовать его только для целей разработки. Я считаю, что это может помочь изолировать ошибки, а не использовать трассировки стека, такие как debug_backtrace()
, так как я могу использовать терминальный скрипт для отображения последних журналов ошибок по последнему измененному значению и находить файлы с нарушениями намного быстрее, чем чтение массивного журнала ошибок.
Моя цель состоит в том, чтобы эти файлы не отображались вообще, очевидно, как отладка уже существующих сайтов и необходимость прохождения журналов ошибок 10 ГБ или tail
/multitail
. Это может быть несколько громоздким. Я пытаюсь разработать этот метод, чтобы ошибки могли быть изолированы по пути. Какие-либо предложения?
Я не уверен, что ваша идея получается на практике, но включая файл, не должна означать, что рабочий каталог изменяется. Единственный шанс, я вижу, что вы создаете свою собственную функцию обработки ошибок (http://php.net/set_error_handler), которая просматривает обратную трассировку для файла ошибки (обратите внимание, что некоторые ошибки не находятся в файле, но «никуда» «так что вам нужно искать * последний файл»), а затем войдите в этот каталог (http://php.net/error_log). Вы регистрируете этот обработчик в * * auto_prepend_file' *. – hakre
* «Журналы ошибок 10 ГБ» * - сначала вам нужно исправить другую проблему, например. сначала закройте этот большой шар. также на короткое время, если огромное количество сообщений является подавляющим, не регистрируйте повторяющиеся ошибки: http://stackoverflow.com/q/1964732/367456 (может не помочь вам, просто говоря) – hakre
Мне нравится идея не регистрировать повторяющиеся ошибки. Я столкнулся с некоторыми сайтами Magento и Wordpress, которые уже существуют, поэтому, как правило, если я нахожу большой журнал ошибок, я бы переименовал его (как это делал большинство людей) и захватил новый, который появится. Однако в контексте php, когда все включено во время выполнения, если не кэшировано уже, это может не помочь, если я прав, это только остановит повторяющиеся ошибки от одного и того же запроса и не будет каждый раз обрезать журнал см., существует ли ошибка. Правильно ли я принимаю? – DWils