Magento - 在phtml模板文件中包含/要求php文件

时间:2014-06-19 15:40:35

标签: php magento include

在我的一个magento模板phtml文件中,我试图包含一个单独的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

错误的第一行显示正确的网址路径,当我直接转到它时,它可以工作 - 它只是不喜欢从phtml模板页面中包含/要求。

我在phtml文件中尝试了以下内容(使用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');
?>

2 个答案:

答案 0 :(得分:2)

而不是Mage::getBaseUrl使用$root = Mage::getBaseDir();

答案 1 :(得分:0)

require('http://....')将启用(如果已启用)对指定的URL执行完整的HTTP请求。由于它是一个URL,该网络服务器将执行 php脚本并向您发送输出。

如果您尝试实际加载test.php的CODE,例如原始的未执行的PHP,那么你不能使用http请求。远程服务器不知道http请求实际上来自PHP并且来自include()。它只是盲目地运行该脚本并通过输出发送。

您需要(比方说)将远程文件重命名为test.txt,以便网络服务器按原样将其发送出去,然后该文本将作为您服务器上的PHP代码执行。< / p>

就其他路径而言,如果您的$root类似于:

 /home/sites/example.com/html

然后要求将要寻找

 /home/sites/example.com/html/dir/test.php

您的网站dir内是否有$root个子目录?