Symfony 2服务器部署致命错误:它尝试打开localhost文件

问题描述 投票:3回答:3

我已经制作了一个symfony2应用程序,我尝试将其部署在共享服务器上,但是我遇到了致命的错误。

我在这里采取了推荐的步骤:Deployment-Tools

我已经更新了供应商依赖项:

php composer.phar install --optimize-autoloader

我已经清除了缓存:

php app/console cache:clear --env=prod --no-debug

我已经为app/cacheapp/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并且它与生产服务器无关。

有关这个问题的任何想法?

php symfony deploying
3个回答
7
投票

我通过手动删除app/cache中的所有内容解决了这个问题。我不知道为什么,但命令php app/console cache:clear --env=prod --no-debug没有按照我期望的方式完成它的工作。

谢谢大家的答案。


0
投票

你设置了权限吗?

$ 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进行部署。一旦你设置它。你会忘记部署的麻烦。


0
投票

如果你在你喜欢的文本编辑器中打开app_dev.php,你会发现包含ip数组的一行允许访问dev envoiromnent。它的评论。

您可以在本地编辑此文件,然后通过ftp上传。请确保你将你的相关公共IP放在那里。然后,您可以在从此ip连接时访问dev enveironment。它还允许您在远程主机上运行app_dev.php,就像在localhost上一样。

此外,您将能够获得更多的调试信息。显然安全性缺乏并且在严肃的应用程序中永远不会发生,但在学习symfony和缺少ssh时非常常见。

以类似的方式,您可以在服务器上运行config.php。

(请注意,在这种情况下,从此ip连接的每个人都可以访问开发环境。)

© www.soinside.com 2019 - 2024. All rights reserved.