使用远程 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 调试的主要内容,如果未能解决你的问题,请参考以下文章

.net 使用 Visual Studio 进行远程调试——“找不到路径”。

远程SSH访问pfSense

使用 XDebug 进行 PHP 远程调试

Php

无法远程调试应用程序 - 端口无法从外部访问

MySQL用户远程访问授权