在我的magento模板php文件之一,我试图包括一个单独的php文件。当我包含它时,我没有得到任何输出,当我使用require时,我得到以下错误
Fatal error: require(): Failed opening required 'http://www.site.co.uk/dir/test.php'
(include_path='/home/usr/public_html/app/code/local:/home/usr/public_html/app/code/community:/home/usr/public_html/app/code/core:/home/usr/public_html/lib:.:/usr/lib/php:/usr/local/lib/php') in /home/usr/public_html/app/design/frontend/theme/edits/template/review/product/view/list.phtml on line 30
错误的第一行显示了正确的url路径,当我直接去它工作-它只是不喜欢被包含/需要从php模板页面。
我在php文件中尝试了以下操作(使用magento的BaseURL,绝对路径和相对路径):
<?php
$root = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
require/include ($root.'dir/test.php');
?>
<?php
require/include ('http://www.site.co.uk/dir/test.php');
?>
<?php
require/include ('../../../../../../../../../dir/test.php');
?>
用$root = Mage::getBaseDir();
代替Mage::getBaseUrl
require('http://....')
将(如果它被启用)做一个完整的HTTP请求到指定的URL。由于它是一个URL,该web服务器将执行 php脚本并将其输出发送给您。
如果你试图实际加载test.php
的代码,例如原始未执行的PHP,那么你不能使用http请求。远程服务器不知道http请求实际上来自PHP,并且来自include()。它只会盲目地运行该脚本并发送输出。
你需要(比如说)将远程文件重命名为test.txt
,以便web服务器按原样发送它,然后该文本将作为PHP代码在您的服务器上执行。
至于其他路径,如果你的$root
是:
/home/sites/example.com/html
则需要查找
/home/sites/example.com/html/dir/test.php
是否有一个dir
子目录内,无论你的网站的$root
是?