我得到的错误是
Warning: Phalcon\Mvc\View\Engine\Volt\Compiler::compileFile(../app/views/index/index.phtml.php): failed to open stream: Permission denied in /Users/mattstephens/Sites/magpie/public/index.php on line 26 Phalcon Exception: Volt directory can't be written
我已经在我的引导程序中声明了伏特引擎的使用情况
$view->registerEngines(array(
'.phtml' => 'Phalcon\Mvc\View\Engine\Volt'
));
我的代码中提到的第26行指向下面显示的应用程序句柄函数
echo $application->handle()->getContent();
这是与权限相关的事情还是由于缺少目录?
答案 0 :(得分:7)
除非您为Volt指定其他文件夹以编译其模板,否则将使用视图文件所在的文件夹来创建相关的编译文件。
您可以在注册服务时设置正确的选项来更改此行为:
use \Phalcon\Mvc\View as PhView;
use \Phalcon\Mvc\View\Engine\Volt as PhVolt;
...
public function initView($options = array())
{
$config = $this->di['config'];
$di = $this->di;
$this->di['volt'] = function ($view, $di) use ($config) {
$volt = new PhVolt($view, $di);
$volt->setOptions(
array(
'compiledPath' => $config->app_volt->path,
'compiledExtension' => $config->app_volt->extension,
'compiledSeparator' => $config->app_volt->separator,
'stat' => (bool) $config->app_volt->stat,
)
);
return $volt;
};
/**
* Setup the view service
*/
$this->di['view'] = function () use ($config, $di) {
$view = new PhView();
$view->setViewsDir($config->app_path->views);
$view->registerEngines(array('.volt' => 'volt'));
return $view;
};
}
$config
将存储您需要的所有信息。通过使用compiledPath
,您指示Volt在那里编译模板,然后将它们提供给前端。该文件夹需要对运行您的Web服务器www-data
或其他用户的用户可写,并且可以位于您的公用文件夹之外。
我经常使用的文件结构是:
app
\controllers
\models
\views
public
\js
\css
\img
var
\volt
\logs
\config
\cache
答案 1 :(得分:6)
将伏特文件权限(内部应用/缓存)更改为777。工作正常
答案 2 :(得分:5)
与此处的其他几个答案相反,不要只是毫不犹豫地设置0777的权限并假装一切都没关系,这完全是荒谬的。您的服务器需要写入缓存目录中的volt文件夹。
您可能需要先创建该文件夹。
sudo mkdir cache
和sudo mkdir cache/volt
。然后用该服务器运行的用户名填充该文件夹。
注意:根据您的配置,cache
文件夹可能位于项目根目录而不是app
内。
例如,如果您的服务器是在名为' www-data'的用户的权限下启动的。 (这是最常见的),在创建正确的文件夹结构后,以下命令将解决您的问题:
sudo chown www-data:www-data -R cache
答案 3 :(得分:1)
我刚刚制作了#app; app / cache" 777 permitions的文件夹)工作))
答案 4 :(得分:0)
将“app / cache”文件夹权限更改为777。 在我的Mac中我确实喜欢这个。
答案 5 :(得分:0)
使用这些命令更改app / cache和app / cache / volt适用于我的项目结构。
chmod -R a+w app/cache
chmod -R a+w app/cache/volt
答案 6 :(得分:0)
只需转到/project_name/store/app/config/config.php并从' cacheDir'更改cacheDir。 => __DIR__。 ' /../../ app / cache /' 到' cacheDir' => __DIR__。 ' /../../缓存/' 强>
另外,将其写入权限更改为777。
答案 7 :(得分:0)
检查baseUri
中的config.php
是否与安装目录相同
答案 8 :(得分:0)
您应该使用chown命令更改项目目录的所有权,
chown -R your_system_user:webserver_user yourproject/