我已经制作了一个symfony2应用程序,我尝试将其部署在共享服务器上,但是我遇到了致命的错误。
我在这里采取了推荐的步骤:Deployment-Tools
我已经更新了供应商依赖项:
php composer.phar install --optimize-autoloader
我已经清除了缓存:
php app/console cache:clear --env=prod --no-debug
我已经为app/cache
和app/logs
更改了服务器的权限
但它不起作用。这是错误:
致命错误:未捕获异常'UnexpectedValueException',消息'流或文件“/var/www/cookieboy/app/logs/prod.log”无法打开:无法打开流:/ homepages中没有此类文件或目录/32/d453730371/htdocs/cookieboy/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:71
堆栈跟踪:
#0 /homepages/32/d453730371/htdocs/cookieboy/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php(37):Monolog \ Handler \ StreamHandler-> write(Array)
#1 /homepages/32/d453730371/htdocs/cookieboy/vendor/monolog/monolog/src/Monolog/Handler/AbstractHandler.php(58):Monologer
#2 /homepages/32/d453730371/htdocs/cookieboy/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php(101):Monologian
#3 /homepages/32/d453730371/htdocs/cookieboy/vendor/monolog/monolog/src/Monolog/Logger.php(239):Monologer
#7 / homepages / 32 / d453730371 / htdocs / cookieboy / vendor / mo in /homepages/32/d453730371/htdocs/cookieboy/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php on the 71
我想知道为什么symfony试图打开这个位于/var/www/cookieboy/app/logs/prod.log
的文件locahost
并且它与生产服务器无关。
有关这个问题的任何想法?
我通过手动删除app/cache
中的所有内容解决了这个问题。我不知道为什么,但命令php app/console cache:clear --env=prod --no-debug
没有按照我期望的方式完成它的工作。
谢谢大家的答案。
你设置了权限吗?
$ sudo setfacl -R -m u:www-data:rwX -m u:`whoami`:rwX app/cache app/logs
$ sudo setfacl -dR -m u:www-data:rwx -m u:`whoami`:rwx app/cache app/logs
如果您无权更改目录的ACL,则需要更改umask,以便缓存和日志目录可以进行组写或可写入世界(具体取决于Web服务器用户和命令行用户)在同一组或不在同一组)。要实现此目的,请将以下行放在app / console,web / app.php和web / app_dev.php文件的开头:
umask(0002); // This will let the permissions be 0775
// or
umask(0000); // This will let the permissions be 0777
无论如何,我建议你使用capifony进行部署。一旦你设置它。你会忘记部署的麻烦。
如果你在你喜欢的文本编辑器中打开app_dev.php,你会发现包含ip数组的一行允许访问dev envoiromnent。它的评论。
您可以在本地编辑此文件,然后通过ftp上传。请确保你将你的相关公共IP放在那里。然后,您可以在从此ip连接时访问dev enveironment。它还允许您在远程主机上运行app_dev.php,就像在localhost上一样。
此外,您将能够获得更多的调试信息。显然安全性缺乏并且在严肃的应用程序中永远不会发生,但在学习symfony和缺少ssh时非常常见。
以类似的方式,您可以在服务器上运行config.php。
(请注意,在这种情况下,从此ip连接的每个人都可以访问开发环境。)