Включение удаленного файла php в качестве ресурса

Я пытаюсь включить удаленные php-файлы в качестве ресурса, но у меня проблемы. Я зашел в файлы php.ini и установил allow_url_fopen в положение ON . Я также искал параметр allow_url_include но его не было в файле, я добавил его в файл php.ini и также установил его.

Если я попытаюсь включить использование

  include ('http://somewebsite.com/lib/somescript.php'); 

Сервер / php выдает сообщение:

Доступ к URL-файлу отключен в конфигурации сервера

Я также получаю сообщение:

не удалось открыть поток: никакой подходящей обертки не было найдено в бла-бла-бла

Секундованный способ, которым я пытаюсь выполнить один и тот же результат, – это использовать fopen, но я просто получаю содержимое файла, это не то, что мне нужно. Мне нужен мой локальный скрипт, чтобы увидеть удаленный скрипт как rescource исполнительной.

 $myscript = fopen("http://someotherwebsite/lib/my_script.php", "r"); $incmyscript= fread($myscript , 9999); fclose($myscript); // include in the contents of my_script.php echo $incmyscript; 

Я должен что-то делать неправильно? Я знаю, что эхоизменение переменной-incmyscript неверно, но я не могу придумать, как разместить код. Я не уверен, что fopen – лучший лучший способ получить то, что я хочу.

Есть идеи?

Вместо echo вы можете использовать eval .

Только сделайте это, если вы хотите выполнить PHP-код с другого сервера, а не только, если хотите просто включить HTML!

Даже если вы действительно хотите выполнить PHP-код с другого сервера, man-in-the-middle может выполнить произвольный PHP-код на вашем сервере. Поэтому вам следует лучше использовать HTTPS или вообще не включать удаленный файл.

Пример:

 $myscript = fopen("https://someotherwebsite/lib/my_script.php", "r"); $incmyscript= fread($myscript , 9999); fclose($myscript); $incmyscript); 

Сообщение, которое вы получаете:

 URL file-access is disabled in the server configuration 

Указывает, что для параметра allow_url_include в вашем php.ini установлено значение Выкл. Включение этой опции позволит вам делать удаленное включение файлов, но будьте очень осторожны с этим, так как это довольно большой риск для безопасности, если другой сайт будет скомпрометирован (хакер может легко ввести свой собственный удаленный код на ваш сайт).

Вместо эха вы можете использовать это:

 eval($incmyscript); 

Но будьте осторожны, это очень плохая практика! ПРОЧИТАЙТЕ ЭТО: http://php.net/manual/en/function.eval.php

Если вы можете доверять удаленному сценарию, вы можете позвонить eval :

 eval ($incmyscript); 
  1. Если http://somewebsite.com/lib/somescript.php обслуживаемый сервером, поддерживающим PHP, вы пытаетесь включить его вывод, а не сам код! В противном случае это просто неправильно и может рассматриваться как дыра в безопасности!
  2. То, что вы пытаетесь сделать, – это открытие серьезной дыры в безопасности!

Если удаленный сервер настроен на обработку файлов .php, вы не сможете получить источник для него. Сервер будет обрабатывать PHP, а затем возвращать любой вывод. Если получить удаленные источники PHP можно, хакеры будут захватывать наш код и искать уязвимости слишком легко!