Встроенный сервер PHP не может взломать

У меня есть относительно простой скрипт, подобный следующему:

<?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 считаться кем-то другим, когда он выполняет запрос?

1

Решение

Чтобы сделать комментарий ответом: встроенный веб-сервер разработки PHP — это очень простой однопоточный тестовый сервер. Он не может обрабатывать два запроса одновременно. Вы пытаетесь извлечь файл из себя в отдельном запросе, поэтому вы попали в тупик. Первый запрос ожидает завершения второго, но второй запрос не может быть обработан, пока первый еще выполняется.

15

Другие решения

Я думаю проблема в вашем $ url. Это может выглядеть так: $ url = «HTTP: // локальный: 2222 / test.html«; или $ url =»Http: //localhost/test.htmlЯ думаю, это решит вашу проблему. Спасибо за ваш вопрос. Желаем удачи.

-4

По вопросам рекламы [email protected]