我有一台运行在apache2上的服务器和一些虚拟主机,我想在其上部署一个Symfony3应用程序。但是,我无法将其正确部署到生产环境中,它在开发环境中完美运行。每当我执行
sudo composer install --no-dev --optimize-autoloader
我收到错误: PHP致命错误:Class' Sensio \ Bundle \ GeneratorBundle \ SensioGeneratorBundle'在第25行的/my/path/app/AppKernel.php中找不到 脚本Sensio \ Bundle \ DistributionBundle \ Composer \ ScriptHandler :: clearCache处理以异常终止的post-install-cmd事件
[RuntimeException]
An error occurred when executing the "'cache:clear --no-warmup'" command: PHP Fatal error: Class 'Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle'not found in /my/path/app/AppKernel.php on line 25.
收到此错误后,我再次阅读文档,并说我需要将Symfony环境导出到生产环境。所以我这样做了:
export SYMFONY_ENV=prod
之后我再次执行composer install
命令,但结果相同。
Stackoverflow(和其他来源)上的一些人说我需要通过执行
来清除缓存sudo bin/console cache:clear --env=prod
所以我这样做但结果相同。任何人都有任何想法?
尝试了其他侮辱: 实际上,每当我以这种方式执行命令时它都会很有效:
sudo SYMFONY_ENV=prod composer install --no-dev --optimize-autoloader
但是,每当所有内容都安装正确后,我就会尝试访问该URL并获得500.所以我去了Apache2日志,检查是否有错误,我又看到了RuntimeException
。
修改
所以我也按照link的说明进行操作,但不幸的是,结果相同。我还检查了我是否已经正确安装了所有内容,例如ACL和我。
我也做了getfacl /my/path/var/cache
,并根据此link显示了正确的信息。
编辑#2
我已经运行了php bin/symfony_requirements
,它向我展示了“即使在php bin/console cache:clear --env=prod --no-debug
答案 0 :(得分:0)
我不确定问题是什么,但由于这是一个新部署,请确保您已设置正确的安装要求。对于apache,通常用户是apache,group是apache。
在生产环境中,设置正确所有者的简单方法:group是以下命令:
render
介绍如何在Linux(和MacOS)上设置ACL权限,var目录需要特殊权限。
请务必检查这些内容,看看是否有帮助。
编辑#2。 我看到了你的评论。其中一个链接是Symfony2,它已经过时了。我不建议使用旧的引用。它们可能指的是与Symfony3不同的Symfony2。
看一下这个链接: http://symfony.com/doc/current/cookbook/deployment/tools.html
您是否运行了$sudo chown -R apache:apache /var/www/html/test.karljohnchow.com/
命令?这一点非常重要。它会指出问题。
清除(和预热)缓存的命令是:
php bin/symfony_requirements
这与你上面显示的不同。