Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php-S localhost:port:表示永远等待localhost_Php - Fatal编程技术网

php-S localhost:port:表示永远等待localhost

php-S localhost:port:表示永远等待localhost,php,Php,我安装了灯 我有phptest.php,它包含 我试过: [.public_html]$ php -S localhost:54545 phptest.php [Mon Jan 25 21:06:52 2016] PHP Warning: Module 'xdebug' already loaded in Unknown on line 0 PHP 5.6.14 Development Server started at Mon Jan 25 21:06:52 2016 Listening

我安装了

我有
phptest.php
,它包含

我试过:

[.public_html]$ php -S localhost:54545 phptest.php 
[Mon Jan 25 21:06:52 2016] PHP Warning:  Module 'xdebug' already loaded in Unknown on line 0
PHP 5.6.14 Development Server started at Mon Jan 25 21:06:52 2016
Listening on http://localhost:54545
Document root is /home/simha/.public_html
Press Ctrl-C to quit.
然后我打开
http://localhost:54545
在Chrome中,显示等待本地主机的

我试过
http://localhost:81
(参见下文)和
http://localhost:81/~simha
它们都能工作。它显示了相应的根目录。我的Apache看起来没有问题

还有一些关于
主机
容器
的背景知识:

我有安装了LAMP的Linux操作系统。使用
systemd nspawn
我在一个容器中使用LAMP运行相同的Linux操作系统

我为主机灯设置了80个端口,为集装箱灯设置了81个端口

在主机系统中不存在这样的问题。在
php-S localhost:xxxxx phptest.php

但是在容器中,它只是说
等待localhost

编辑:我应该更清楚地知道,两个web服务器(Apache和PHP-S)在同一个端口上运行会阻止连接,而不是访问脚本

如果已经安装了LAMP,则不需要运行
php-S
。您可能有两台web服务器尝试访问同一脚本,但其中只有一台可以访问,另一台被阻止:


默认情况下,容器的虚拟端口无论如何都不会连接到主机的物理端口。这就是为什么您不能访问容器中运行的PHPWeb服务器。您需要先将主机上的物理端口绑定到容器的虚拟端口

检查并查找
--port
选项

它的格式如下:

--port=<protocol>:<host_port>:<container_port>

它将主机上端口80上的TCP重定向到容器上的端口545。如果主机上的端口80已经绑定(很可能是Apache),请使用另一个端口。

我将从执行PHP Web服务器开始,不使用任何脚本,只需
PHP-S localhost:54545
,然后请求任何静态(即非PHP)文件。如果它能工作,那么问题最可能出现在您的PHP脚本
phptest.PHP
。我已经添加了phptest.phpAnd的内容了吗?它对静态文件有效吗?静态意味着什么?正如我所写的:任何静态(即非PHP)文件。任何未被web服务器处理的内容(CSS、JS、图像、任何其他数据)。我有另一台启动了lamp的pc。php-S在那里工作,不需要等待本地主机,只是您误解了它。这意味着,内置web服务器在同一时间只能处理一个请求。如果请求因某种原因被阻止(未结束),则不会处理任何其他请求。这绝对不意味着不能有更多不同的web服务器为相同的文件提供服务。为什么或者如何阻止脚本读取?@Dawiderency,但是如果他将LAMP服务器配置为在与php内置服务器相同的端口上侦听,脚本不会仍然被阻止吗?两者如何同时提供相同的脚本?是的,当然,不能将两个已处理的进程绑定到同一端口。但是我不认为LAMP(即Apache)在默认情况下绑定到他使用的端口54545(
php-s localhost:54545
)。无论如何,它与任何文件都无关。为什么要阻止读取的文件?@SanthoshYedidi很抱歉,但您的问题(甚至是编辑过的)与此答案或这些注释无关。我应该使用哪些参数--port。我正在运行
systemd nspawn-bD/home/Mycontainer
对不起,我不知道
nspawn
,我只是在谷歌上为你搜索了一切。你必须自己测试,我甚至不能尝试。只需在容器内重定向用于PHP web服务器的TCP端口即可。我添加了一个示例,即如何调用它。否。我尝试了
--端口tcp:80:545454
我得到了
无法解析主机端口tcp:80:545454:无效参数
。除此之外,我希望避免端口转发。因为localhost:54545/1.html工作,而localhost:54545/phptest.php不工作。有没有办法在我连接时查看一些日志文件。顺便说一句,它应该是
--port=
(您缺少了equals。您可以省略协议,因此它可能看起来像
--port=80:54545
,但如果它已经在主机上使用过,就不要使用80。但是如果它对静态文件有效,端口转发似乎不是原因。
systemd-nspawn -bD /home/Mycontainer --port=tcp:80:54545