我可以在不使用Apache的情况下在Eclipse PDT下调试PHP文件吗?

时间:2011-12-04 17:01:19

标签: php eclipse eclipse-plugin

我刚刚安装了Eclipse PDT 3.0.2(我不知道这是什么Eclipse基础,Galileo或Helios),并且一直在享受NetBeans的升级。为了更加认真地对待我的PHP开发(我最近只从ASP.NET扩展),我决定从我的Xampp Apache doc根目录(htdocs)直接编辑我的PHP文件,并在我通常的源位置创建了一个工作区,c:\ development。

在我看来,从我能够迅速从PDT下调试PHP文件的所有可怕的不同资源中收集到的文件,需要在Apache下调试文件,然后复制到 htdocs 。是否存在不需要部署或PHP服务器的本地调试选项,以及如何更接近使用此类调试器?

4 个答案:

答案 0 :(得分:2)

我对Eclipse一无所知但我有一种强烈的感觉,你只是希望能够使用Apache配置多个站点,因此您可以在同一个实时发布版本的同时处理项目的私有副本计算机。

我建议您查看Apache手册中的Name-based Virtual Host Support章节。您可以在系统的hosts文件中创建本地域名。此外,您可以使用不同的本地IP地址(127.0.0.1,127.0.0.2,127.0.0.3 ...)或不同的端口。

你还提到你过去一直在编写ASP.NET代码。 PHP几乎在所有Web服务器(包括IIS)中都运行良好,这一点毫无价值。您不需要安装Apache,我很确定Eclipse不关心您的服务器供应商。

答案 1 :(得分:1)

  

在我看来,这些文件需要在Apache下调试,然后复制到htdocs。

不,你可以做我所做的事情(可能还有成千上万的其他开发者,如其他答案所示):

将您的开发文件保留在您所属的主目录中,并配置本地Web服务器,以便name-based virtual hostDocumentRoot是您的开发根目录(或其子目录)。 / p>

最小的Apache配置如下所示:

<VirtualHost *:80>
  ServerName localhost
  ServerAlias 127.0.0.1
  DocumentRoot C:/development/

  <Directory "C:/development">
    # helpful if you want to browse your files
    Options +Indexes
  </Directory>
</VirtualHost>

该行

127.0.0.1  localhost

应该已经在您的hosts文件中,因此您不需要在那里进行任何更改。 (但是,如果你认为你需要另一个主机名别名,那就去吧。我目前已经定义了3个额外的主机名用于测试目的。)

默认情况下,Apache手册和其他默认Apache资源仍然可用(此处:http://localhost/manual/等)。例如(我在Debian GNU / Linux上,所以我不知道确切的XAMPP路径):

Alias /manual "C:/Program Files/XAMPP/apache/manual/"

<Directory "C:/Program Files/XAMPP/apache/manual/">
  Options Indexes FollowSymlinks MultiViews
  AllowOverride None
  Order allow,deny
  Allow from all
  AddDefaultCharset off
</Directory>

(事实也是如此 - 在Linuxese中,当然 - 在我的默认/etc/apache2/conf.d/apache2-doc中。)有关详细信息,请参阅优秀的XAMPP documentation

  

是否存在不需要部署或PHP服务器的本地调试选项,以及如何更接近使用此类调试器?

我不明白这个问题。没有“PHP服务器”。有Zend Server - 你的意思是?

如果要为Apache等Web服务器调试PHP脚本,则需要在该服务器上运行PHP 。对于Apache,可以是Apache module, as a CGI handler, or under FastCGI。如果您正在开发CLI-PHP scripts,则只需要服务器。 XAMPP安装程序应该已经为您设置了它。

假设您希望调试应该在Apache上使用PHP模块运行的PHP脚本(运行带有<?php phpinfo();的PHP脚本以确保;我只是没有其他任何活动的PHP调试经验),您可以配置PDT,以便它使用远程调试与上述本地虚拟主机。为此,您还需要一个用于PHP的服务器端调试模块,例如XdebugZend Debugger(两者的调试客户端 < em>包含在PDT中)。我之前一直在使用Zend Debugger,但现在我正在使用Xdebug(在Eclipse 3.7.1中使用PDT 3.0.0v20110516- ... [2011年9月发布的“Indigo”SR1]¹)因为它是free software,{{ 3}},并且具有高度可配置性和能力,即使它也是免费的。

这篇文章特别对我有所帮助:packaged with Debian。 有关更多信息,请参阅Xdebug文档(例如,客户端IP地址的独立性)。

但是,有关PDT和PDT调试的大量信息可以在PHP remote debugging with Xdebug and Eclipse PDT找到。

底线:如果您在localhost上进行调试,则无需部署代码,因为您已经部署了代码,只需拥有它在DocumentRoot或低于http://localhost/。 Eclipse PDT不关心远程代码的位置;它只通过HTTP URI访问资源。如果以{{1}}开头,那就这样吧:)

(复制周围的资源会带来不一致和意外覆盖Apache文件的风险,因此不会这样做。)

¹EclipseIndigo没有PHP包,但你可以启动e。 G。使用Eclipse 3.7.1 Classic并使用Update Manager在其上安装PDT。只需选择“Indigo”(或其他)存储库,然后选择“Programming Languages”下的“PHP Development Tools”。应该自动解决依赖关系。另请参阅PDT Downloads site

答案 2 :(得分:0)

我不记得Eclipse是否有本地PHP调试选项。但我认为Zend Studio(基于Eclipse PDT)附带了自己的 PHP二进制文件。我从来没有尝试过使用它们。

您最好的办法是创建一个新的工作区,我在这里解释了如何做 publishing php files from eclipse to apache htdocs

如果您需要在XAMPP安装上设置vhosts(虚拟主机),this is a great and easy to understand tutorial

如果您想要其他IDE的建议,那么我会选择Zend Studio($ 299)或Rapid PHP 2011。虽然我从未使用过Rapid PHP 2011,但它确实看起来很有前途,它具有许多与流行的IDE including debugging相同的功能。请注意,在我看来,它似乎不像Eclipse / Zend那么专业(这也是为什么我总是推荐其他两个以上的原因)。

答案 3 :(得分:0)

我认为问题更多的是'我可以在PDT中调试CLI脚本'。如果是这样的话,是的,你可以。

您所要做的就是编辑CLI正在使用的PHP.INI文件,并确保为CLI启用了XDebug,并且xdebug.remote_autostart设置为1.很可能CLI PHP正在使用来自Apache的不同INI文件,所以请确保使用正确的文件。

最后,在PDT中单击“调试项目”并将其调试为Web脚本,即使它不是。重要的是你基本上告诉PDT开始听。完成后,您应该能够从CLI运行脚本并在适当的时候启动PDT。但是,xdebug.remote_autostart是关键。