Не могу включить файл на удаленный сервер - PullRequest
3 голосов
/ 29 февраля 2012

Моя проблема в том, что я не могу включить файл на удаленный сервер.

<?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 ]

4 голосов
/ 29 февраля 2012

Это можно сделать, установив allow_url_include в on на php.ini.

Но, как упоминалось в комментариях, это открывает

огромный

дыра в безопасности вашего приложения.

0 голосов
/ 29 февраля 2012

Require_Once следует использовать только для локальных файлов. Если вы хотите получить удаленный файл, используйте file_get_contents. Помните, что если вы пытаетесь включить php с такого удаленного сервера, это будет действительно небезопасно, или php будет выполняться на удаленном сервере.

...