【问题标题】:Magento - include/require php file within phtml template fileMagento - 在 phtml 模板文件中包含/需要 php 文件
【发布时间】:2014-08-10 05:36:08
【问题描述】:

在我的一个 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

错误的第一行显示了正确的 url 路径,当我直接转到它时它可以工作 - 它只是不喜欢被 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');
?>

【问题讨论】:

  • 我真的想不出你为什么要这样做。告诉我们您想要实现的目标,也许(但最有可能)会有更好的方法在您的视图/模板中获取该数据。
  • 我正在尝试将feefo评论整合到我的magento商店中。我知道他们做了一个扩展,但阅读集成指南似乎很简单,我只需要能够在我希望评论显示的任何地方包含并显示“test.php”页面

标签: php magento include


【解决方案1】:

$root = Mage::getBaseDir();代替Mage::getBaseUrl

【讨论】:

  • 让它与这个&lt;?php require(Mage::getBaseDir().DS.'dir'.DS.'test.php');?&gt;一起工作
  • 请在上方显示完整示例
【解决方案2】:

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

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

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

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

 /home/sites/example.com/html

那么 require 将会寻找

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

无论您网站的 $root 是什么,在其中是否有一个 dir 子目录?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多