任何人都知道为什么Magento不允许在app / design文件夹之外的模板.phtml文件的符号链接?
如果我在该文件夹中执行符号链接,它可以正常工作,但如果它在外部链接,则不起作用。所以它似乎是一些权限/安全性的东西,但我找不到任何信息。
任何?
替代方法:感谢Alan在下面的建议,我找到了一个解决方法 - 因为我自己只是将它用于本地开发,我很开心。如果这有助于其他任何人,我会在这里添加它。所以我在core / Mage / Core / Block / Template.php中直接插入以下行 Varien_Profiler :: start($ fileName);
$storeId = Mage::app()->getStore()->getId();
$theme = Mage::getStoreConfig('design/package/name', $storeId);
Mage::Log($this->_viewDir.DS.$fileName);
$includes = $this->_viewDir.DS.$fileName;
if(strpos($includes, 'frontend/'.$theme )) {
include $this->_viewDir.DS.$fileName;
};
使用IF语句可以阻止所有基本模板加倍,并且只允许自定义主题模板通过。
答案 0 :(得分:18)
从Magento 1.5.1.0(可能是1.5.x?)开始,系统>处有一个选项。配置>开发人员>模板设置>允许您启用的符号链接。
不再需要肮脏的黑客/变通办法。 : - )
答案 1 :(得分:5)
这是由于1.4.2中的变化导致Magento不再允许符号链接文件夹。如果你看一下Template.php
$includeFilePath = realpath($this->_viewDir . DS . $fileName);
if (strpos($includeFilePath, realpath($this->_viewDir)) === 0) {
include $includeFilePath;
} else {
Mage::log('Not valid template file:'.$fileName, Zend_Log::CRIT, null, null, true);
}
如果模板不在“viewDir”下,您会看到它不会加载。
答案 2 :(得分:3)
找到另一个适合我的小解决方案:
sshfs 192.168.1.12:/srv/www/vhosts/dev.****.*****.de/media/catalog/product/ catalog/product/ -o allow_other
这是通过sshfs安装远程文件系统,allow_other选项是必要的,以便从远程机箱安装文件而不使用远程机箱文件权限:
此选项允许您在SSHFS命令中使用-o allow_other,这将允许非root用户访问您正在安装的特定资源。
希望这对你们任何人都有帮助
答案 3 :(得分:2)
我也使用符号链接到我的自定义代码,我设法通过使用mount --bind而不是创建符号链接来克服这个问题,例如: 自定义主题目录:/ home / user / workspace / magento / app / design / frontend / default / mytheme
cd <magento dir>/app/design/frontend/default
mkdir mytheme
sudo mount --bind /home/user/workspace/magento/app/design/frontend/default/mytheme mytheme
此方法将不在OSX上工作。
答案 4 :(得分:0)
将一些日志记录代码添加到基本模板块
#File: app/code/core/Mage/Core/Block/Template.php
public function fetchView($fileName)
{
...
Mage::Log($this->_viewDir.DS.$fileName);
var_dump($this->_viewDir.DS.$fileName);
include $this->_viewDir.DS.$fileName;
...
}
最终,渲染模板块是使用系统路径调用include
。一旦获得Magento构建模板的路径,就创建一个单行PHP文件
<?php
include('/path/that/was/logged/foo.phtml');
并尝试加载模板。这应该允许您隔离任何特定的包含调用失败的原因。我的直接猜测是PHP安全模式设置,但是我已经很长时间没有打击共享主机限制了。
祝你好运!