3

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

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

我想重现 NetBeans 中唯一真正的好处:我只需单击“运行”按钮,就可以立即在浏览器中看到结果。你是怎么设置的?

4

2 回答 2

4

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

我认为唯一的机会是手动启动 php 内置网络服务器。在所需的根目录中打开一个终端并使用以下命令启动网络服务器

php -S 本地主机:8000

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

于 2016-12-05T20:21:29.590 回答
1

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

更新:此解决方案的一个警告是,当您在 Eclipse 中终止正在运行的 CLI 时,它会终止包装脚本,而不是直接终止 php 服务器。我已经向子(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添加一个新服务器: 在此处输入图像描述

应该就是这样。现在创建一个 PHP CLI 运行配置,使用包装器可执行文件作为“备用 PHP”,并为 php 文件指定路由文件:

在此处输入图像描述

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

于 2017-02-27T18:46:12.387 回答