使用127.0.0.1:8888进行Vhost和调试


Vhost and Debugging with 127.0.0.1:8888

我有一个Drupal应用程序,它使用以下命令"drush-runserver"运行

当我运行此命令时,我会收到以下消息:"HTTP服务器侦听127.0.0.1,端口8888(请参阅http://127.0.0.1:8888/)"

如果我访问那个url,我会看到我应该看到的应用程序,所以这很好。

然而,我正在尝试为这个url创建一个vhost,并对应用程序进行一些调试。

我以前创建过很多次vhosts,但从来没有为位于另一个端口的应用程序创建过。在谷歌搜索后,我在httpd-vhosts.conf文件中放置了以下内容:

NameVirtualHost *:8888
<VirtualHost *:8888>
    DocumentRoot "/Users/justin/Sites/drupal/"
    ServerName myproject.dev
    ServerAlias www.myproject.dev
    ErrorLog "/private/var/log/apache2/myproject.dev-error_log"
    CustomLog "/private/var/log/apache2/myproject.dev-access_log" common
</VirtualHost>

我还在/etc/hosts文件中放置了以下内容。

127.0.0.1 myproject.dev www.myproject.dev

即使在重新启动服务器后,如果我在浏览器窗口中访问myproject.dev,浏览器也会挂起。就像我说的,我以前从来没有遇到过这样的问题,但我猜这和8888有关。有什么解决方案吗?

其次,我正在尝试在PHPStorm中为我的应用程序设置调试。同样,我有一种感觉,我遇到这么多麻烦的原因是因为8888端口。我一定错过了一些正常调试时通常不必设置的东西(端口80)。

以下是我的php.ini文件中当前的xdebug设置:

[xdebug]
zend_extension="/usr/local/Cellar/php55-xdebug/2.4.0/xdebug.so"
xdebug.default_enable=1
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_host="127.0.0.1:8888"
xdebug.remote_port=9001
xdebug.remote_autostart=1
xdebug.idekey="phpstorm"
xdebug.max_nesting_level=1000

我应该提到的是,我的调试器可以处理我在项目之外创建的任何随机PHP文件。同样,我肯定在这个8888端口上遗漏了一些东西。

您在这里要处理三件不同的事情。首先是内置的PHP web服务器,它正在与Drush一起运行。它在端口8888上侦听,除非您在命令行中进行了不同的指定。其次是Apache和vhost配置。你可以让vhost80端口监听。端口是由服务器而非应用程序选择的。你可以在16421端口上运行服务器,你的应用程序会正常工作。第三个是您的xdebug配置。

我看到的唯一真正的问题是您的xdebug配置。您只需要远程主机IP/主机名,而不需要额外的端口。您在那里添加的端口是PHP内置web服务器使用的端口。Xdebug运行在Xdebug config Xdebug remote_port设置中定义的另一个端口上。PHPStorm将被配置为连接到特定端口上的xdebug。确保PHPStorm中的端口和您的xdebug配置匹配。

如果您正确配置了它,那么无论您使用的是内置的web服务器还是Apache,您都可以进行调试。