使用PHP的内置服务器设置Eclipse PDT

时间:2016-11-03 16:33:55

标签: php eclipse netbeans eclipse-pdt php-builtin-server

我还是PHP开发的新手,到目前为止我使用NetBeans来完成这项工作。不幸的是,NetBeans并不是最好的IDE,而且我的Mac上的速度非常慢。 我想使用Eclipse PDT for PHP,因为我知道并且更喜欢Eclipse(我来自Java)。

但是我无法在Eclipse中设置服务器......所有文档和主题都只显示了ppl在外部服务器(例如MAMP或XAMPP)的htdocs文件夹中保存文件。由于我不需要数据库,我只想使用PHP的内置服务器,而不是徒劳地安装和运行heawyweight应用程序。

我想在NetBeans中重现唯一真正好的东西:我只需单击Run按钮,我立即在浏览器中看到结果。 你是如何设置的?

2 个答案:

答案 0 :(得分:3)

即使我有点迟到帮助你,我也想写下我的解决方案,因为我今天遇到了同样的问题。

我认为唯一的机会是手动启动php内置的网络服务器。在所需的根目录中打开终端,然后使用

启动Web服务器

php -S localhost:8000

然后,您可以添加一个带有基本URL的新服务器:http://localhost:8000和选择的文档根目录,您将拥有与Netbeans相同的功能。

答案 1 :(得分:1)

将这个hackety-hack-hack放在一起以完成这项工作(如果你设置它,甚至可以使用xdebug远程调试!!!)。

  

更新:使用此解决方案的一个警告是,当您在Eclipse中终止正在运行的CLI时,它会终止包装脚本,而不是直接终止php服务器。我已经向child(php服务器)进程添加了一些陷阱和信号的捕获。适用于OSX。

概述:

  • 我正在运行Eclipse Neon
  • 需要您希望提供的文档根目录中的路由器文件(请参阅:http://php.net/manual/en/features.commandline.webserver.php
  • 创建一个包装器bash脚本,以便在服务器模式下调用PHP并传入详细信息
  • 将脚本设置为具有可执行权限
  • 将此bash脚本添加为PHP可执行文件
  • 对于项目,使用此新的可执行文件创建运行配置作为PHP CLI,并将路由器文件传入。

这里是bash脚本php5.6-server

#!/bin/bash

_sigterm() {
   echo "Caught SIGTERM signal!"
   kill  -2 "$child"
}

_sigint() {
   echo "Caught SIGINT signal!"
   kill  -14 "$child"
}

if [ $1 = "-v" ]; then
   #This is needed for when eclipse trys to detect php version
   /path/to/php -v
else
   trap _sigterm SIGTERM
   trap _sigint SIGINT
   # This is why your router file needs to be in the doc root
   ROUTER=${@: -1}
   DIR=$(dirname $ROUTER)
   /path/to/php -S  localhost:8000 -t $DIR $ROUTER
   child=$!
   wait "$child"
fi

这是一个简单的router.php,只是为了让它发挥作用:

 <?php
   // router.php
  if (preg_match('/\.(?:png|jpg|jpeg|gif)$/', $_SERVER["REQUEST_URI"])) {
    return false;    // serve the requested resource as-is.
  } else { 
     echo "<p>Welcome to PHP</p>";
  }

现在在Eclipse中转到Eclipse->Preferences->PHP->PHP Executables并添加一个新服务器: enter image description here

那应该是它。现在使用包装器可执行文件创建一个PHP CLI运行配置,作为替代PHP&#39;并为php文件指定路由文件:

enter image description here

然后以CLI运行!!! PHP服务器现在应该在本地主机上的端口8000上进行侦听。我怀疑这种方法也适用于HHVM的Proxygen服务器。