2009-02-02 91 views
3

作为我的PHP学习过程的一部分,我正在使用共享主机服务来使用PHP weblog应用程序。服务提供商有一个典型的LAMP环境,具有远程ssh访问权限。使用远程shell访问进行PHP调试

Vim一直是我探索PHP代码的好朋友。但是,我发现有时很难在代码中追踪错误内容。例如,有时候我访问了一个页面,我收到了一个空白的回应,没有任何错误信息。我应该如何去调试呢?任何有用的工具?

我的经验主要集中在C/C++,Perl和一些CGI编程。所以PHP对我来说是一个非常令人耳目一新的体验:-)

万一它很重要,我正在玩的应用程序是Lyceum,我没有太多的选择LAMP环境本身。

编辑:免费软件工具首选:-)

回答

4

我假设您的托管服务提供商配置了其关闭display_errors的PHP安装,这是一件好事。这就是为什么你看到空白页面。所以,在目前最实际的解决办法是有一个.htaccess文件,其打开它:

php_flag display_errors on 

您还会需要error_reporting到一个适当的值:

php_flag error_reporting "E_ALL | E_STRICT" 

无论如何,请记住在让用户访问您的网站之前关闭此功能。

对于高级调试,我建议在服务器上安装Xdebug,其中Eclipse PDTNetBeans IDE with PHP support作为您的编辑器。他们都是很好的调试客户,但我真的怀疑任何提供商会在他们的实时服务器上安装Xdebug。所以如果你没有开发环境,那么你几乎只剩下日志功能。

+0

+1如何打开错误报告,但不幸的XDebug上,因为防火墙的共享主机环境,也除非主机让您编译和使用自己的PHP二进制文件FCGI使用非法扩展的难度也许没用/ cgi – David 2009-02-02 09:56:42

1

就个人而言,我会建议jEdit而非活力。 SFTP插件允许您直接在服务器上编辑(正确,加载和保存)PHP文档,并且PHPParser插件将为您提供一些错误识别。另外,如果你得到一个没有错误信息的空白页面,那么很可能这些消息只是隐藏起来。确保错误报告已启用,无论是在你的config或者在你的代码是这样的:

// Report all PHP errors 
error_reporting(E_ALL); 

如果错误报告已启用,但您仍没有看到任何消息,无论是enable logging或启用output to the browser

2

访问您自己的本地开发环境(例如通过XAMPP)可以让您安装XDebug。

PhpEd会让你调试它,但也可以让Eclipse的PDT环境。

错误通过编辑php的ini配置文件来跟踪和记录日志也是一个好方法,特别是如果你可以管理它来记录信息。另外,例如,考虑添加跟踪语句并使用FirePHP。

+0

是的 - 本地发展是一条路 – 2009-02-02 19:44:33

1

如果你得到一个空白页面,这可能是因为一个致命错误,与display_errors关闭。默认情况下,PHP会将错误记录到Apaches错误日志,但您也可以将其配置为log errors to a separate log

对于调试,您可能还需要寻找到Xdebug的。这个扩展可以做很多事情,包括交互式调试。你需要一个客户端来使用调试器,但是有一个vim插件可以实现这一点。