4

我有一个相对简单的脚本,如下所示:

<?php
$url = "localhost:2222/test.html";

echo "*** URL ***\n";
echo $url . "\n";
echo "***********\n";
echo "** whoami *\n";
echo exec('whoami');
echo "* Output **\n";

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

$output = curl_exec($ch); 

curl_close($ch);

echo $output;

当我在命令行上执行它时,它可以工作 - 我从 test.html 中得到微薄的结果。

当我通过加载内置 PHP 服务器并浏览到脚本来运行此脚本时,它会挂起。没有输出到屏幕,没有写入日志。

我读到有时用户权限会妨碍,所以我尝试使用 whoami 来确保运行内置 PHP 服务器的用户与在命令行上执行脚本的用户相同;他们是。

safe_mode 关闭,disable_functions 设置为空。我可以成功执行其他命令(如 whoami)。

我还应该检查什么?内置的 PHP 服务器在满足请求时是否算作其他用户?

4

2 回答 2

26

PHP 内置开发 Web 服务器是一个非常简单的单线程测试服务器。它不能同时处理两个请求。您试图在单独的请求中从自身检索文件,因此您遇到了死锁。第一个请求正在等待第二个请求完成,但在第一个请求仍在运行时无法处理第二个请求。

于 2015-03-23T07:49:35.020 回答
-5

我认为你的 $url 有问题。它可能看起来像这样 $url = " http://localhost:2222/test.html "; 或 $url = " http://localhost/test.html "; 我认为它可以解决你的问题。谢谢你的问题。祝你好运。

于 2015-03-20T19:24:14.550 回答