【发布时间】:2014-05-05 13:10:04
【问题描述】:
我的任务是为不同的评估阶段(dev/test/staging/etc)建立一个针对不同环境的网站。
然而,在我们的暂存环境中,似乎有一些差异会阻止 PHP 脚本完成,因此页面永远不会传递到浏览器。
我想知道是否有一种方法可以输出以在切断连接时记录某种堆栈跟踪或回溯,或者是否有其他方法可以找出 PHP 在脚本中的任何给定点到底在做什么生命周期?
这是一个 Drupal 站点,所以它涉及很多我不熟悉的代码,并且可能需要几个小时才能在整个过程中使用 die; 命令来查看脚本加载到的位置。
我知道我可能应该查看环境中的差异,但是所有环境都应该具有非常相似的配置(Ubuntu 11.04),并且登台环境似乎非常乐意为其他 PHP 站点提供服务,而该特定站点拒绝完成。如果有的话,这个暂存站点比其他没有问题的环境有更多的可用资源。
UPDATE:对不起,最后发现问题了。暂存环境位于不允许通过公共 IP 访问自身的 VLAN 上,并且无论出于何种原因(仍然对此感到困惑),它试图将自身作为页面加载的一部分进行访问,并且从未完成请求。为 127.0.0.1 设置 hosts 文件条目可解决此问题。
【问题讨论】:
-
你研究过 xdebug 吗?
-
可以选择分步调试器吗? xdebug.org/docs/remote
-
如果你想使用
die(),那么我倾向于做的方法与你猜1到1000时使用的方法相同。首先从一半开始(500),然后那么如果它没有达到那个点,那么这个点必须在之前,你再一次减半(250)等等。 -
我会在有问题的服务器上安装 Drupal 的干净副本,看看是否可行。另外,我不确定是否一定需要几个小时才能将一些出口添加到您的代码库中 - 尝试十分钟,这可能是值得花费的时间。