[英]symfony2 - how to switch from “dev” to “prod”?
我下载了 symfony2,我可以从 app_dev.php 开始运行它。
但是当我从 app.php 开始时,我得到一个错误页面 404。
app.php 虽然当然在那里并且它被执行。
该错误显然发生在 app.php 中最后一行代码之后的某处:
$kernel->handle(Request::createFromGlobals())->send();
我想我必须配置的地方有一个开关。
编辑:
根据 GeLo 的建议,我将生产版本的路由添加到 app/config/routing.yml。
_welcome:
resource: "@AcmeDemoBundle/Resources/config/routing.yml"
prefix: /
我创建了 src/Acme/DemoBundle/Resources/config/routing.yml 的内容:
bla:
pattern: /
defaults: {_controller:AcmeDemoBundle:Demo:index}
在DemoController::indexAction()
我放了一个die(__FILE__)
;
没有什么; 我仍然从 app.php 得到 404?
编辑关于答案:
./app/console --env=prod cache:clear
成功了。 注意 env 参数。
默认情况下,Symfony 2 附带一个演示包,只能从开发环境中访问。
生产环境不包含任何路由,所以出现 404 错误页面是正常的。
编辑:
你确定你的包在 AppKernel.php 中启用了吗?
如果是,请使用以下命令清除缓存: ./app/console cache:clear
使用以下命令检查路由是否启用: ./app/console router:debug
而是更改所有者。
sudo chown www-data:www-data -R app/cache
sudo chown www-data:www-data -R app/logs
那就是让浏览器拥有文件夹。 语法是:
chown <USER>:<GROUP> <SWITCH> <DIRECTORY>
我只是想为这类问题整合一些技巧,因为我现在用全新的 Symfony2 安装来面对它。
作为全新安装,您通常会在 /src/AppBundle 下获得 AppBundle 以及 /src/Acme/DemoBundle 下的 AcmeDemoBundle
如果你想在 app_dev 上运行 AcmeDemoBundle ,同时在 app.php 上有一个应用程序(即 AppBundle 提供全新安装)(并避免 404 ),你也可以这样做:
在/app/config/routing_dev.yml中注释以下行(如果有的话):
_main:
resource: routing.yml
在/app/config/routing.yml添加一个新路由(如果你没有)
index:
pattern: /
defaults: { _controller: AppBundle:Default:index }
然后像其他人已经建议的那样清空缓存并测试应用程序
1) http://your_application_path/web/
2) http://your_application_path/web/app_dev.php
如果第一个上一切正常,您应该得到一个带有字符串“主页”的白页。 ( to edit this one go in /app/Resources/views/default/index.html.twig... Layout for this one is base.html.twig ) and, on the second one you should get the DemoBundle provided by Symfony2.
希望能帮助到你!
我只让网络服务器帐户(即'master-chef'拥有/Symfony2/app/cache/prod目录)来修复它。命令如下:
$sudo chown master-chef -R /var/www/Symfony2/app/cache/prod
在您的“web/app.php”文件中
$kernel = new AppKernel('prod', false);
将值更改为“真”。
$kernel = new AppKernel('prod', true);
现在您可以在生产模式下加载应用程序。
您的问题与 Symfony2 的缓存有关。 我有同样的问题。 尝试这个:
sudo php app/console cache:clear --env=prod --no-debug
sudo chmod 777 -R../sf2/
(sf2) 是我的项目的主目录你完成了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.