当我尝试运行时,Yii服务无所事事。 (fsockopen():无法连接)

时间:2016-03-22 20:15:48

标签: php yii yii2 fsockopen

我试图开始使用Yii2框架。正如documentation我所做的那样

$composer global require "fxp/composer-asset-plugin:~1.1.1"
$composer create-project --prefer-dist yiisoft/yii2-app-basic yii2-test

然后我cd yii2-test并运行php yii serve --port=8888

我预计它会运行服务器,但它会以代码255退出。调试器说它会停止on the line

$fp = @fsockopen($hostname, $port, $errno, $errstr, 3);

并且错误消息是

fsockopen(): unable to connect to localhost:8888 (Connection refused)

我该如何解决这个问题?

有些环境:

描述:Ubuntu 15.10

$ php -v
PHP 5.6.11-1ubuntu3.1 (cli) 
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies
    with Xdebug v2.3.3, Copyright (c) 2002-2015, by Derick Rethans

1 个答案:

答案 0 :(得分:1)

这种奇怪的行为是由xdebug设置引起的

xdebug.halt_level=E_NOTICE|E_WARNING|E_USER_WARNING|E_USER_NOTICE

要解决我的问题,我必须从中排除E_WARNING

解释

在开始yii serve命令之前检查另一个应用程序是否使用了选定端口。 这是通过尝试在此端口打开到localhost的套接字

在方法isAddressTaken中完成的
$fp = @fsockopen($hostname, $port, $errno, $errstr, 3);

,所以每次端口为空(并且yii可以使用它)时,fsockopen会生成由@抑制的警告。

结果:如果你有xdebug并且它使所有脚本停止警告 - yii serve将无法启动。