PHP 内置服务器无法 cURL
PHP Built-In Server Can't cURL
我有一个相对简单的脚本,如下所示:
<?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 服务器的用户与 PHP 服务器相同在命令行上执行脚本;他们是。
safe_mode 关闭,disable_functions 设置为空。我可以成功执行其他命令(比如 whoami)。
我还应该检查什么?内置 PHP 服务器在完成请求时是否算作其他用户?
我认为你的 $url 有问题。它可能看起来像这样 $url = "http://localhost:2222/test.html"; or $url = "http://localhost/test.html";我认为它可以解决您的问题。谢谢你的问题。祝你好运。
PHP 内置开发 Web 服务器是一个非常简单的单线程测试服务器。它不能同时处理两个请求。您试图在单独的请求中从自身检索文件,因此您 运行 陷入了僵局。第一个请求正在等待第二个请求完成,但是当第一个请求仍在 运行.
时无法处理第二个请求
从 PHP 7.4 开始,环境变量 PHP_CLI_SERVER_WORKERS
允许 并发请求 通过在 built-in 网络服务器。它被认为是实验性的,请参阅 the docs。
使用它,PHP 脚本可以向自身发送请求,而无需停止。
PHP_CLI_SERVER_WORKERS=10 php -S ...
也适用于 Laravel:
PHP_CLI_SERVER_WORKERS=10 php artisan serve
我有一个相对简单的脚本,如下所示:
<?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 服务器的用户与 PHP 服务器相同在命令行上执行脚本;他们是。
safe_mode 关闭,disable_functions 设置为空。我可以成功执行其他命令(比如 whoami)。
我还应该检查什么?内置 PHP 服务器在完成请求时是否算作其他用户?
我认为你的 $url 有问题。它可能看起来像这样 $url = "http://localhost:2222/test.html"; or $url = "http://localhost/test.html";我认为它可以解决您的问题。谢谢你的问题。祝你好运。
PHP 内置开发 Web 服务器是一个非常简单的单线程测试服务器。它不能同时处理两个请求。您试图在单独的请求中从自身检索文件,因此您 运行 陷入了僵局。第一个请求正在等待第二个请求完成,但是当第一个请求仍在 运行.
时无法处理第二个请求从 PHP 7.4 开始,环境变量 PHP_CLI_SERVER_WORKERS
允许 并发请求 通过在 built-in 网络服务器。它被认为是实验性的,请参阅 the docs。
使用它,PHP 脚本可以向自身发送请求,而无需停止。
PHP_CLI_SERVER_WORKERS=10 php -S ...
也适用于 Laravel:
PHP_CLI_SERVER_WORKERS=10 php artisan serve