Показать трассировку приложения PHP в журнале ошибок Apache - PullRequest
1 голос
/ 14 февраля 2012

Я разработал приложение на PHP (используя платформу Symfony).

В моем файле журнала ошибок Apache полно таких ошибок:

[Mon Feb 13 20:08:08 2012] [error] [client 60.169.75.168] Empty module and/or action after parsing the URL "/." (/)., referer: http://www.mywebsite.com/account.php
[Mon Feb 13 20:08:10 2012] [error] [client 60.169.75.168] Empty module and/or action after parsing the URL "/." (/)., referer: http://www.mywebsite.com/services

Есть ли я в любом случае?Можно ли заставить журнал Apache отображать трассировку стека, чтобы я мог отследить проблему?

Может быть, я должен сказать Symfony (это парень, который пишет некоторые сообщения об ошибках в журнал), чтобы написать что-то еще (ошибкапроследить).Может ли это быть так?

ОБНОВЛЕНИЕ: Проблема возникает на производстве, поэтому я не могу использовать xdebug.

Спасибо,
Дан

Ответы [ 3 ]

2 голосов
/ 14 февраля 2012

Попробуйте изменить файл конфигурации settings.yml в apps / YOUR_APP / config / settings.yml для вашей среды prod:

prod:
  .settings:
    logging_enabled: true

В вашем файле config factories.yml в apps / YOUR_APP / config /factories.yml:

prod:
  logger:
    class: sfAggregateLogger
    param:
      level: debug

Не забудьте очистить кэш.

php symfony cc

Symfony будет записывать более полный журнал каждого запроса в свой собственный файл журнала (обычно в SYMFONY_DIR / log /YOUR_APP_prod.log)

1 голос
/ 14 февраля 2012

Существует расширение PHP под названием xDebug, которое, я считаю, будет делать то, что вы хотите, оно не будет помещать трассировку стека в журналы apache, однако вам нужно указать, где их хранить.

0 голосов
/ 14 февраля 2012

to show a stack trace

Вам это не нужно.Это сообщение генерируется Symfony Framework, который просто сообщает вам, что ничего не знает о модулях account.php или services.Эти модули запрашиваются по указанным URL-адресам:

http://www.symfony -project.org / book / 1_2 / 04-Основы создания страниц

URL-адреса являются частью ответа

Symfony содержит систему маршрутизации, которая позволяет вам полностью разделить фактическое имя действия и форму URL-адреса, необходимого для его вызова.Это позволяет настраивать форматирование URL-адреса так, как если бы он был частью ответа.Вы больше не ограничены ни структурой файла, ни параметрами запроса;URL для действия может выглядеть как фраза, которую вы хотите.Например, вызов действия index модуля, называемого article, обычно выглядит следующим образом: http://localhost/frontend_dev.php/article/index?id=123

Этот URL-адрес извлекает данную статью из базы данных.В этом примере он извлекает статью (с id = 123) в разделе Европа, в которой конкретно обсуждаются финансы во Франции.Но URL-адрес может быть написан совершенно по-другому с простым изменением в файле конфигурации routing.yml: http://localhost/articles/europe/france/finance.html

Мало того, что результирующий URL-адрес удобен для поиска, он также важендля пользователя, который затем может использовать адресную строку в качестве псевдо-командной строки для выполнения пользовательских запросов, как показано ниже: http://localhost/articles/tagged/finance+france+euro

Symfony знает, как анализировать и генерировать интеллектуальные URL-адреса для пользователя,Система маршрутизации автоматически очищает параметры запроса от умного URL и делает их доступными для действия.Он также форматирует гиперссылки, включенные в ответ, чтобы они выглядели «умными».Вы узнаете больше об этой функции в Главе 9. В целом, это означает, что то, как вы называете действия ваших приложений, должно зависеть не от того, как должен выглядеть URL-адрес, используемый для их вызова, а от функций действий в приложении.,Имя действия объясняет, что на самом деле делает действие, и часто это глагол в инфинитивном виде (например, show, list, edit и т. Д.).Имена действий можно сделать полностью невидимыми для конечного пользователя, поэтому не стесняйтесь использовать явные имена действий (например, listByName или showWithComments).Вы сэкономите на комментариях к коду, чтобы объяснить свою функцию действия, плюс код будет намного легче читать.

...