在Apache错误日志中显示PHP应用程序跟踪


Show PHP application trace in Apache error log

我用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。

谢谢,
Dan

尝试在apps/your_APP/config/settings.yml中更改您的产品环境的settings.yml配置文件:

prod:
  .settings:
    logging_enabled: true

在apps/your_APP/config/factories.yml:中的factories.yml配置文件中

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

记得清空你的缓存。

php symfony cc

Symfony将在其自己的日志文件中(通常在Symfony_DIR/log/YOUR_APP_prod.log中)为每个请求写一个更完整的日志

有一个名为xDebug的PHP扩展,我相信它会做你想做的事情,但它不会将堆栈跟踪放在apache日志中,你需要指定将它们存储在哪里。

to show a stack trace

您不需要它。此消息由Symfony Framework生成,它只是"告诉"您它对模块account.phpservices一无所知。这些模块由显示的URL请求:

http://www.symfony-project.org/book/1_2/04-The-Basics-of-Page-Creation

URL是响应的一部分

Symfony包含一个路由系统,允许您拥有完整的实际操作名称和URL形式之间的分隔需要调用它。这允许自定义URL格式,就好像这是回应的一部分。您不再受文件限制结构也不通过请求参数;操作的URL可以看起来像你想要的短语。例如,对索引的调用名为article的模块的操作通常如下所示:http://localhost/frontend_dev.php/article/index?id=123

此URL从数据库中检索给定的文章。在本例中检索欧洲部分中的一篇文章(id=123)专门讨论法国的金融。但是URL可以写以一种完全不同的方式,只需简单地更改路线即可。yml配置文件:http://localhost/articles/europe/france/finance.html

不仅因此URL搜索引擎友好,这对用户,然后可以将地址栏用作伪命令行自定义查询,如下所示:http://localhost/articles/tagged/finance+法国+欧元

Symfony知道以解析和生成用户的智能URL。路由系统自动从智能URL中剥离请求参数他们可用于行动。它还设置了包含的超链接的格式让他们看起来"聪明"。您将了解更多第9章中的这一功能。总的来说,这意味着你命名的方式应用程序的操作不应受到以下方式的影响用于调用它们的URL应该看起来像,但由操作的函数在应用程序中。动作名称解释了动作的实际内容确实如此,而且它通常是不定式形式的动词(如show、list、,编辑等等)。可以使操作名称对最终用户,所以不要犹豫使用明确的操作名称(如listByName或showWithComments)。您将节省代码注释为了解释你的动作函数,加上代码会更容易阅读