【问题标题】:Symfony 1.4 empty decoratorDirectory setting not being populatedSymfony 1.4 空的 decoratorDirectory 设置没有被填充
【发布时间】:2013-03-05 16:36:18
【问题描述】:

我正在处理一个遗留的 symfony 1.4 项目,我在我的办公室 linux 机器 Fedora 16 上设置了我的本地开发环境,一切都很顺利。我不得不用 Mac OS X Lion 为 macbook 机器重新创建环境。

在第二个我收到大量这样的错误

[Mon Mar 04 16:51:58 2013] [error] [client ::1] PHP Fatal error:  Uncaught exception 'sfRenderException' with message 'The decorator template "layout.php" does not exist or is unreadable in "".' in /Users/foo/bar/baz/myApp/v2/cache/something/something/config/config_core_compile.yml.php:3875\nStack trace:\n#0 /Users/foo/bar/baz/myApp/cache/something/something/config/config_core_compile.yml.php(3909)

所以在那个 config_core_compile.yml.php 文件中,这段代码中抛出了异常

if (!is_readable($this->getDecoratorDirectory().'/'.$this->getDecoratorTemplate()))
{
throw new sfRenderException(sprintf('The decorator template "%s" does not exist or is unreadable in "%s".', $this->decoratorTemplate, $this->decoratorDirectory));
}

跟踪 getDecoratorDirectory 方法调用,我在第 175 行附近找到了 sfView.class.php

public function getDecoratorDirectory()
{
return $this->decoratorDirectory;
}

在同一个文件中,decoratorDirectory 属性被“计算/填充”,但它是空白的,你知道什么地方可能出错了吗?一个 symfony 设置,一个 apache 配置?有什么事吗?

P.S 以防万一这是我的 apache vhost

<VirtualHost *:80>
ServerName local.myapp
DocumentRoot /Users/foo/bar/baz/myApp/v2/web


ErrorLog "/private/var/log/apache2/local.myapp-error_log"
CustomLog "/private/var/log/apache2/local.myapp-access_log" combined

<Directory "/Users/foo/bar/baz/myApp/v2/web">
Options FollowSymLinks
AllowOverride All
Allow from All
</Directory>


Alias /sf /Users/foo/bar/baz/myApp/v2/web/lib/vendor/symfony/data/web/sf
<Directory "/Users/foo/bar/baz/myApp/v2/web/lib/vendor/symfony/data/web/sf">
AllowOverride All
Allow from All
</Directory>

</VirtualHost>

编辑: 另外我必须使用 perforce 公司 repos,一位年长的队友一直说他认为是关于编码,这对我来说没有意义,但仍然。

【问题讨论】:

  • 嘿,Elnur 和 j0k,你好吗?你做了什么编辑?
  • 你使用的是同一个apache,同一个php吗? layout.php 文件是否存在于您的应用程序的模板文件夹中?你清除缓存了吗?
  • 如果我没记错的话,在 linux 盒子里我有 apache 2.2,php 是 5.4。* 在 mac 盒子里,我有 php 5.3.15 和 Apache/2.2.22 (Unix) DAV/2 Suhosin-Patch 是的,我已经多次清除缓存文件夹。我在项目中有多个 symfony 应用程序,除了一个之外,它们的模板文件夹中都有 layout.php 文件,正在查看它......
  • j0k,所以 decoratorDirectory 属性为空是正常的吗?
  • 您在vhost 中对alias 的定义有误。路径应该是 ../myApp/v2/lib/vendor... 所以没有 web 部分。虽然我不认为这是你的问题的原因。

标签: php macos apache symfony-1.4


【解决方案1】:

我不确定,但有时当我将一个 symfony 应用程序移动到不同的服务器或不同的文件夹时,我不得不删除所有缓存文件夹,因为 symfony 有时使用绝对路径。

好吧,尝试删除缓存文件夹中的所有内容。可能你需要修复这个文件夹的权限,因为 symfony 需要在这个文件夹上创建目录。 (可能)。

对不起,我的英语不太好解释。

【讨论】:

  • 别担心,英语也不是我的第一语言,是的,你解释得很好。是的,我已经完全清除了缓存,缓存文件夹有 777 权限。不知道我还应该检查什么,虚拟主机看起来还不错?
  • 我认为 vhost 不是问题。但是,有些奇怪...在堆栈跟踪中:“.../Users/foo/bar/baz/myApp/cache/something/something/config/config_core_compile.yml.php(3909)”这个路径不是您的应用程序相同:/Users/foo/bar/baz/myApp/v2/(v2 不在堆栈跟踪广告中...)
  • 是的,symfony 正在缓存东西,而引发异常的文件是缓存文件。另外我可能忘记添加 v2 部分,我放了一个虚构的路径来不显示我的真实路径。
猜你喜欢
  • 1970-01-01
  • 2016-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-07
  • 2014-06-18
相关资源
最近更新 更多