Я пытаюсь включить удаленные 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);
http://somewebsite.com/lib/somescript.php
обслуживаемый сервером, поддерживающим PHP, вы пытаетесь включить его вывод, а не сам код! В противном случае это просто неправильно и может рассматриваться как дыра в безопасности! Если удаленный сервер настроен на обработку файлов .php, вы не сможете получить источник для него. Сервер будет обрабатывать PHP, а затем возвращать любой вывод. Если получить удаленные источники PHP можно, хакеры будут захватывать наш код и искать уязвимости слишком легко!