Mar*_*tyn 4 php composer-php php-builtin-server
我正在使用 PHP 内置服务器,如下所示:
$ composer serve
> php -S localhost:8000 -t public/
Run Code Online (Sandbox Code Playgroud)
但超时了..?
[Symfony\Component\Process\Exception\ProcessTimedOutException]
The process "php -S localhost:8080 -t public/" exceeded the timeout of 300 seconds.
Run Code Online (Sandbox Code Playgroud)
所以,我尝试再次启动它:
$ composer serve
> php -S localhost:8000 -t public/
[Thu May 26 21:31:51 2016] Failed to listen on localhost:8000 (reason: Address already in use)
Script php -S localhost:8000 -t public/ handling the serve event returned with error code 1
Run Code Online (Sandbox Code Playgroud)
为什么超时之前服务器运行的同一端口仍在使用中?我可以停止服务器内置的所有 PHP 实例吗?
如果重要的话,下面是我的composer.json 文件:
{
.
.
.
"scripts": {
"serve": "php -S localhost:8000 -t public/"
}
}
Run Code Online (Sandbox Code Playgroud)
问题是 Composer 在 300 秒后默认超时。
Composer 附带了composer-script process-timeout 静态帮助器来禁用它,只需将其添加到脚本顶部即可:
{
"scripts": {
"serve": [
"Composer\\Config::disableProcessTimeout",
"@php -S localhost:8000 -t public"
]
}
}
Run Code Online (Sandbox Code Playgroud)
要在不更改脚本的情况下进行测试,请执行您可以使用的命令--timeout=0,这会禁用超时。在您的示例中,该命令看起来像composer run-script --timeout=0 serve或带有环境参数前缀,例如COMPOSER_PROCESS_TIMEOUT=0 composer serve。
更多信息还可参阅为什么 Composer 安装在 300 秒后超时?现场。
您可以在文件中设置进程超时,composer.json如下所示:
{
...
"scripts": {
"start": "php -S 127.0.0.1:80 .router.php -t public"
},
"config": {
"process-timeout": 0
}
}
Run Code Online (Sandbox Code Playgroud)
并像这样启动网络服务器:
$ composer start
| 归档时间: |
|
| 查看次数: |
3390 次 |
| 最近记录: |