【问题标题】:Trouble deploying Symfony3 on a new server在新服务器上部署 Symfony3 时遇到问题
【发布时间】:2017-06-03 18:29:15
【问题描述】:

我过去使用过很多 Symfony 并且没有遇到很多问题。我一直在尝试将它部署在不同的服务器上(Ubuntu 16 w/Apache)并且遇到了很多问题。

我现在收到 500 错误 (https://bereanboard.com/app_dev.php)。我尝试的是去*.com/config.php*.com/app_dev.php查看问题(我不得不暂时注释掉禁止从非本地主机访问的部分)。我也一直在检查 Apache error.log 和 Symfony 的 var/logs/prod.log

请记住,它在本地 MAMP 和我以前的 CentOS 上运行良好。

  1. 首先,我第一次遇到 var/cache 和 var/logs 的权限问题。使用chmod -R 777 var/cache 之类的命令很容易解决这个问题。但是为什么这个问题只出现在这个新服务器上呢?无论如何,新服务器上的 config.php 现在告诉我“所有检查都通过了”。

  2. 其次,在 var/logs/prod.log 中,我收到各种各样的“找不到类,您是否忘记了“使用”语句?错误。其中一些用于树枝扩展AppBundle/Twig/AppExtension.php

以下是一些严重错误:

request.CRITICAL:未捕获的 PHP 异常 InvalidArgumentException: “类“AppBundle\Controller\HomeController”不存在。”在 /home/travis/var/cache/prod/classes.php 第 4872 行 {“异常”:“[对象](InvalidArgumentException(代码:0):类 \"AppBundle\Controller\HomeController\" 不存在。在 /home/travis/var/cache/prod/classes.php:4872)"} []

php.CRITICAL:找不到类“AppBundle\Twig\AppExtension” {“异常”:“[对象] (Symfony\Component\Debug\Exception\FatalThrowableError(代码:0): 找不到类“AppBundle\Twig\AppExtension” /home/travis/var/cache/prod/appProdProjectContainer.php:2881)"} [] [2017-01-19 06:35:03] request.CRITICAL:未捕获的 PHP 异常 Symfony\Component\Debug\Exception\ClassNotFoundException:“尝试 从命名空间“AppBundle\Twig”加载类“AppExtension”。你是否 忘记另一个命名空间的“使用”语句?”在 /home/travis/var/cache/prod/appProdProjectContainer.php 第 2881 行 {“异常”:“[对象] (Symfony\Component\Debug\Exception\ClassNotFoundException(代码: 0): 试图从命名空间加载类 \"AppExtension\" \"AppBundle\Twig\"。\n你是否忘记了另一个的 \"use\" 语句 命名空间?在 /home/travis/var/cache/prod/appProdProjectContainer.php:2881)"} [] [2017-01-19 06:35:03] request.CRITICAL:处理时抛出异常 一个例外 (Symfony\Component\Cache\Exception\InvalidArgumentException:缓存 目录不可写 (/home/travis/var/cache/prod/pools/CtBqbs+VrF) 在 /home/travis/var/cache/prod/classes.php 第 1194 行) {“异常”:“[对象] (Symfony\Component\Cache\Exception\InvalidArgumentException(代码: 0): 缓存目录不可写 (/home/travis/var/cache/prod/pools/CtBqbs+VrF) 在 /home/travis/var/cache/prod/classes.php:1194)"} []

此外,值得一提的是,由命令 symfony new project 创建的全新空项目确实工作。

*编辑 我咨询过these Symfony docs。我已经尝试了所有我能找到的清除缓存的方法。

*编辑 这里是 services.yml

services:
    app.twig_extension:
        class: AppBundle\Twig\AppExtension
        arguments: ["@doctrine.orm.entity_manager", "@security.token_storage"]
        public: false
        tags:
            - { name: twig.extension }

【问题讨论】:

  • 你清理生产缓存了吗?
  • 是的,with php bin/console cache:clear --env=prod --no-debug,也可以删除缓存文件夹。这两种方法以前都对我有用
  • 你也重建了你的自动加载文件吗? php composer.phar dump-autoload
  • 我只是做了它并没有改变任何东西。同样的错误。
  • 您是否在 Twig 中使用了一些 Helpers ?如果是,请尝试检查您的 services.yml stackoverflow.com/questions/36421158/…

标签: php apache symfony ubuntu ubuntu-16.04


【解决方案1】:

我曾经遇到过同样的问题。您必须完成删除供应商文件夹

rm -R 供应商/

并重新安装所有依赖项。

php composer.phar 安装

这将解决问题。

【讨论】:

    【解决方案2】:

    您的网络服务器似乎存在访问问题。

    检查在 Centos 上启动 apache 的用户

    # egrep -i '^user|^group' /etc/httpd/conf/httpd.conf
    

    它应该返回apache

    然后给/home/travis目录好权限:

    • 选项 1:您可以查看 Stack Echange / AskUbuntu 并使用 apache 用户而不是 www-data 进行调整

    • 选项 2:使用第一个选项,如果您创建了一个文件夹,Apache 将无法写入该文件夹。这可以通过设置 umask 0007 并将您自己 (travis) 添加到 Apache 组来“修复”,以便该组可以写入新创建的文件和文件夹。

    如果您有足够的权限来更改掩码,选项 2 会更好。

    【讨论】:

      【解决方案3】:

      尝试清除缓存:

      php bin/console cache:clear --env=prod
      

      并设置文件权限:

      chmod -R 777 var/cache
      chmod -R 777 var/logs
      chmod -R 777 var/sessions
      

      希望对你有所帮助。

      【讨论】:

        猜你喜欢
        • 2019-09-23
        • 1970-01-01
        • 2017-10-25
        • 1970-01-01
        • 1970-01-01
        • 2022-10-19
        • 1970-01-01
        • 1970-01-01
        • 2016-09-16
        相关资源
        最近更新 更多