Bob*_*uld 2 php const include remote-server
我有以下问题:我有一个PHP文件(standards.php),其中包含以下语句:
define('CONSTVAR', '/path/');
Run Code Online (Sandbox Code Playgroud)
现在,我有另一个名为的文件untitled.php,其中包含:
include ('standards.php');
echo CONSTVAR;
Run Code Online (Sandbox Code Playgroud)
这将导致页面/path/显示常量的值.
到目前为止一切都很好.
但是,当我把它standards.php放在我的另一个网站上并尝试从那里(使用include('http://mysite.eu/core/standards.php');命令)包含它时,它不起作用.常量保持为空,我也得到以下错误
警告:main(http://mysite.eu/core/standards.php)[function.main]:无法打开流:第28行/home/www/this.nl/core/untitled.php中的权限被拒绝
警告:main()[function.include]:无法打开"http://mysite.eu/core/standards.php"(include_path ='.:/ usr/local/php4/lib/php')/第28行的home/www/this.nl/core/untitled.php
allow_url_include也启用allow_url_fopen了.当我输入standards.php浏览器的完整URL时,我得到一个页面结果,所以这不是没有访问权限的问题,对吧?
这可能是什么问题?为什么常量应该是全局的,而不是从远程服务器包含时"继承"?
您通常不能通过包装器include从远程主机获取PHP文件,HTTP因为当您的PHP解析器请求包含时,它无法找到该文件(include用于包含来自具有绝对或相对路径的本地文件系统的文件),或者远程Web服务器发送它不是源代码,而是像解析的PHP文件一样发送到浏览器.并include采取源代码.
有关详细信息,请参阅以下手册include():
警告.安全警告:
可以在远程服务器上处理远程文件(取决于文件扩展名和远程服务器是否运行PHP的事实),但它仍然必须生成有效的PHP脚本,因为它将在本地服务器上处理.如果来自远程服务器的文件应该在那里处理并仅输出,则readfile()是更好的使用功能.否则,应特别注意保护远程脚本以生成有效和所需的代码.