Не могу включить файл на удаленный сервер
Моя проблема в том, что я не могу включить файл на удаленный сервер.
<?php
echo "Including\n";
require_once("http://xx.xxx.xxx.xx:8080/path/to/myfile.inc");
echo "Done..\n";
?>
Сценарий завершается ошибкой в функции require_once. Я запускаю сценарий с: php -d allow_url_include=On script.php, но чтобы убедиться, что я установил для allow_url_include и allow_url_fopen значение On в php.ini
Если я http://xx.xxx.xxx.xx:8080/path/to/myfile.inc в браузер, файл будет передан мне. Я также попытался включить другие удаленные файлы (на стандартный порт 80), но все равно не повезло
Что меня действительно смущает, так это то, что все работает с моих локальных компьютеров в моем офисе (mac, ubuntu), а не с наших серверов. Я проверил его на 2 разных серверах, виртуальном и выделенном. Я могу получить файл с помощью fopen().
2 ответа
Это можно сделать, установив allow_url_include
в on
на php.ini.
Но, как уже упоминалось в комментариях, это открывает
огромный
дыра в безопасности вашего приложения.
Require_Once следует использовать только для локальных файлов. Если вы хотите получить удаленный файл, используйте file_get_contents. Помните, что если вы пытаетесь включить php с такого удаленного сервера, это будет действительно небезопасно, или php будет выполняться на удаленном сервере.