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


Magento - include/require php file within phtml template file

在我的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是?