3

我制作了一个 symfony2 应用程序,并尝试将其部署在共享服务器上,但出现致命错误。

我在这里采取了推荐的步骤:部署工具

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

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): Monolog\Handler\AbstractProcessingHandler->handle(Array)

#2 /homepages/32/d453730371/htdocs/cookieboy/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php(101): Monolog\Handler\AbstractHandler->handleBatch(Array)

#3 /homepages/32/d453730371/htdocs/cookieboy/vendor/monolog/monolog/src/Monolog/Logger.php(239): Monolog\Handler\FingersCrossedHandler->handle(Array)

#4 /homepages/32/d453730371/htdocs/cookieboy/vendor/mo 在 /homepages/32/d453730371/htdocs/cookieboy/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php 在第 71 行

我想知道为什么 symfony 试图打开这个文件/var/www/cookieboy/app/logs/prod.log),它位于locahost并且它与生产服务器无关。

对这个问题有任何想法吗?

4

3 回答 3

7

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

谢谢大家的回答。

于 2013-09-10T15:55:05.043 回答
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进行部署。一旦你设置它。你会忘记部署问题。

于 2013-08-29T10:26:08.617 回答
0

如果你在你最喜欢的文本编辑器中打开 app_dev.php,你会注意到一行包含允许访问开发环境的 ip 数组。已评论。

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

此外,您将能够获得更多的调试信息。这显然是缺乏安全性,不应该在严肃的应用程序中发生,但在学习 symfony 和缺少 ssh 时确实很常见。

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

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

于 2013-08-29T14:41:04.523 回答