2016-11-03 32 views
2

我還沒有一個新手到PHP的發展,到目前爲止,我用於工作的NetBeans。不幸的是,NetBeans不是最好的IDE,而且在我的Mac上速度不合理。 我想使用Eclipse PDT for PHP,因爲我知道並且比Eclipse更好(我來自Java)。設置Eclipse PDT使用PHP的內置服務器

但我不能建立在Eclipse的服務器......所有的文檔和主題只是表明PPL保存在外部服務器(如MAMP或XAMPP)的htdocs文件夾的文件。由於我不需要數據庫,我只想使用PHP的內置服務器,而不是安裝並運行heawyweight應用程序。

我想重現NetBeans中唯一真正的好東西:我只需要點擊運行按鈕,我馬上看到結果在瀏覽器中。 你如何設置?

回答

2

即使我有點晚來幫助你,我要寫下我的解決方案,因爲我有今天所面臨的同樣的問題。

我認爲唯一的機會就是手動啓動內置的Web服務器的PHP。在所需的根目錄下打開一個終端,並開始與

PHP的Web服務器-S本地主機:8000

然後你就可以用基本URL添加新服務器:http://localhost:8000與已選定的文檔根目錄,你將有像Netbeans一樣的功能。

+0

感謝Tobias,我自己只找到了這個解決方案。打火機的資源,但不是那麼快和容易。我知道,我想要太多,但是一旦你得到了好東西,少一些就不夠了:) –

1

放在一起這hackety亂砍,砍,使這項工作(即使Xdebug的遠程調試工作,如果你設置它!)。

UPDATE:一個警告這種解決方案是,當您終止在Eclipse中運行CLI,則直接終止包裝腳本,而不是PHP服務器。我已經爲孩子(php服務器)過程添加了一些陷阱和信號。適用於OSX。

概述:

  • 我運行Eclipse霓虹燈
  • 需要文檔根要從服務路由器文件(見本: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和PHP文件中指定的路徑文件創建一個PHP CLI運行配置:

enter image description here

然後作爲CLI運行! PHP服務器現在應該在本地主機上的端口8000上監聽。我懷疑這種方法可能也適用於HHVM的Proxygen服務器。