我有一个相对简单的脚本,如下所示:
<?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服务器在执行请求时是否算作其他用户?
localhost:2222
是运行此脚本的同一台服务器吗?我对内置的 PHP 开发服务器不是很熟悉,但如果该服务器是单线程的,则可能会遇到死锁情况。 - decezecurl_setopt ($ch, CURLOPT_PORT , 2222);
来指定端口,而不是在url中指定。 - DarkBee