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

时间:2012-02-13 20:27:29

标签: php apache symfony1 logging

我用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 个答案:

答案 0 :(得分:2)

尝试在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中)

答案 1 :(得分:1)

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

答案 2 :(得分:0)

to show a stack trace

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

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

  

网址是回复的一部分

     

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

     

此网址   从数据库中检索给定的文章。在这个例子中,它   检索欧洲部分中的文章(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应该看起来,但是通过动作的功能   在申请中。动作名称解释了动作的实际内容   是的,它通常是一个不定式的动词(如节目,列表,   编辑,等等)。动作名称可以完全不可见   最终用户,所以不要犹豫使用明确的动作名称(如   listByName或showWithComments)。您将节省代码注释   解释你的动作功能,加上代码会容易得多   读取。