我试图将远程php文件作为资源包含但我遇到了一些麻烦。我进入php.ini
个文件并将allow_url_fopen
设置为ON
。我也查找了设置allow_url_include
,但它不在文件中,我将其添加到php.ini文件中并将其设置为on。
如果我尝试使用
include ('http://somewebsite.com/lib/somescript.php');
服务器/ php吐出一条消息说:
在服务器配置中禁用了URL文件访问
我也收到一条消息说:
无法打开流:在blah blah blah中找不到合适的包装器
我试图获得相同结果的seconed方式是使用fopen,但我只是获取文件的内容,这不是我需要的东西我需要我的本地脚本才能将远程脚本看作是一个可执行文件的资源。
$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;
我必须做错事吗?我知道回应varbel $ incmyscript是错误的,但我想不出一种方法放在代码中。我不确定fopen是否是获得我想要的最佳方式。
有什么想法吗?
答案 0 :(得分:1)
而不是echo
,您可以使用eval
。
只有在您想要从其他服务器执行PHP代码时才这样做,而不是只想包含HTML!
即使您确实想要从其他服务器执行PHP代码,中间人也可以在您的服务器上执行任意PHP代码。因此,您应该更好地使用HTTPS或完全避免包含远程文件。
示例:
$myscript = fopen("https://someotherwebsite/lib/my_script.php", "r");
$incmyscript= fread($myscript , 9999);
fclose($myscript);
$incmyscript);
答案 1 :(得分:1)
您收到的消息:
URL file-access is disabled in the server configuration
表示php.ini中的allow_url_include
设置设置为Off。启用该选项将允许您进行远程文件包含,但要非常小心,因为一旦其他站点遭到入侵(黑客可以轻松地将自己的远程代码注入您的站点),这是一个非常大的安全风险。
答案 2 :(得分:0)
答案 3 :(得分:0)
如果您可以信任远程脚本,那么您可以致电eval:
eval ($incmyscript);
答案 4 :(得分:0)
http://somewebsite.com/lib/somescript.php
服务器支持PHP服务,那么你试图包含它的输出,而不是代码本身!否则这是一个错误的,可能会被视为安全漏洞!答案 5 :(得分:0)
如果远程服务器配置为处理.php文件,您将无法获取它的来源。服务器将处理PHP,然后返回任何输出。如果可以获得远程PHP源代码,黑客就会抓住我们的代码并轻松地查找漏洞!