使用远程 shell 访问进行 PHP 调试
Posted
技术标签:
【中文标题】使用远程 shell 访问进行 PHP 调试【英文标题】:PHP debugging with remote shell access 【发布时间】:2010-10-04 21:31:17 【问题描述】:作为我 php 学习过程的一部分,我正在使用共享托管服务来玩 PHP 博客应用程序。服务提供商有一个典型的具有远程 ssh 访问的 LAMP 环境。
Vim 一直是我探索 PHP 代码的最佳朋友。但是,我发现有时在出现错误时很难跟踪代码中的内容。例如,有时我访问一个页面,我得到一个空白响应,没有任何错误消息。我应该如何调试这个?有什么有用的工具吗?
我的经验主要是 C/C++、Perl 和一些 CGI 编程。所以 PHP 对我来说是一种非常令人耳目一新的体验 :-)
如果重要的话,我正在玩的应用程序是Lyceum,而我在 LAMP 环境本身上没有太多选择。
编辑:首选免费软件工具 :-)
【问题讨论】:
【参考方案1】:我假设您的托管服务提供商将他们的 PHP 安装配置为关闭了 display_errors,这是一件好事。这就是您看到空白页的原因。所以目前最实用的解决方案是拥有一个 .htaccess 文件来打开它:
php_flag display_errors on
您还需要将error_reporting 设置为适当的值:
php_flag error_reporting "E_ALL | E_STRICT"
无论如何,请记住在让用户访问您的网站之前将其关闭。
对于高级调试,我建议在服务器上安装Xdebug,并使用Eclipse PDT 或NetBeans IDE with PHP support 作为您的编辑器。他们都是很好的调试客户端,但我真的怀疑任何提供商都会在他们的实时服务器上安装 Xdebug。因此,如果您没有开发环境,您几乎可以使用日志记录功能。
【讨论】:
+1 关于如何打开错误报告,但不幸的是 xdebug 在共享主机环境中可能无用,因为防火墙以及使用未经授权的扩展的困难,除非主机允许您编译和使用您的拥有 PHP 二进制文件为 fcgi/cgi【参考方案2】:访问您自己的本地开发环境(例如通过 XAMPP)可以让您安装 XDebug。
PhpEd 可以让您调试它,还可以让您调试 Eclipse 的 PDT 环境。
通过编辑 php 的 ini 配置文件来跟踪和记录错误也是一个好方法,特别是如果你可以管理它来记录信息。此外,还可以考虑添加跟踪语句并使用 FirePHP,例如。
【讨论】:
【参考方案3】:就个人而言,我会推荐jEdit 而不是vim。 SFTP 插件允许您直接在服务器上编辑(加载和保存)PHP 文档,PHPParser 插件会给您一些错误识别。
此外,如果您得到一个没有错误消息的空白页面,那么这些消息很可能只是对您隐藏。确保在您的 config 或您的代码中启用错误报告,如下所示:
// Report all PHP errors
error_reporting(E_ALL);
如果启用了错误报告但您仍然看不到任何消息,请enable logging 或启用output to the browser。
【讨论】:
【参考方案4】:如果您得到一个空白页,这可能是因为一个致命错误,display_errors
已关闭。默认情况下,PHP 会将错误记录到 Apache 的错误日志中,但您也可以将其配置为 log errors to a separate log。
对于调试,您可能还想查看 Xdebug。这个扩展可以做很多事情,包括交互式调试。你需要一个客户端来使用调试器,但是有一个 vim 插件可以做到这一点。
【讨论】:
【参考方案5】:试试 NuSphere PhpED
【讨论】:
以上是关于使用远程 shell 访问进行 PHP 调试的主要内容,如果未能解决你的问题,请参考以下文章