Как заставить включенную функцию PHP работать с настройками прокси?

<?php
$incfile = $_REQUEST["file"];
include($incfile);
?>

файл upload.php:

<?php
$context = array(
'http' => array(
'proxy' => "tcp://proxy.example.com:80",
'request_fulluri' => true,
'verify_peer'      => false,
'verify_peer_name' => false,
)
);
stream_context_set_default($context);
?>

Файл proxy.php:

auto_prepend_file=proxy.php
allow_url_include=1

php.ini:

Я просматриваю http://testexample.com/upload.php?file=http://example.com/file.php но http://example.com/file.php Тайм-аут с ошибкой Предупреждение: include (): не удалось открыть поток: Превышено время ожидания соединения. Я поиграл с echo file_get_contents и использовал URL-путь, и он отлично работает, так как кажется, что он соблюдает настройки прокси. Так кто-нибудь знает, в чем проблема с использованием include или почему он не использует мои настройки прокси?

Изменить: В качестве обходного пути я использовал этот код ниже:

<?php
$incfile = $_REQUEST["file"];
$filecontent = file_get_contents($incfile);
eval($filecontent);
?>

Однако проблема в том, что он читает в PHP как строку, а не весь файл. Поэтому я должен удалить начальный и конечный теги PHP, которые изменяют тело запроса GET, что влияет на мои результаты. Так что, несмотря на то, что это работает, функция include — это то, что мне нужно.

1

Решение

Так что вам нужны ваши http запросы для example.com, чтобы перейти на proxy.example.com. Будет ли достаточно просто переопределить DNS для example.com, чтобы он указывал на proxy.example.com — возможно, в файле hosts — на этом сервере разработки? Тогда вы могли бы

include 'http://example.com/file.php';

Если вы хотите ограничить решение PHP, вы можете определить специальную потоковую оболочку для вашего прокси.

http://php.net/manual/en/function.stream-wrapper-register.php

http://php.net/manual/en/stream.streamwrapper.example-1.php

0

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

Других решений пока нет …

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