在我的一个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');
?>
答案 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
个子目录?