无法在新服务器

时间:2017-01-19 06:38:21

标签: php apache symfony ubuntu ubuntu-16.04

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

我现在收到500错误(https://bereanboard.com/app_dev.php)。我试过的是转到*.com/config.php*.com/app_dev.php查看问题(我必须暂时删除禁止从非localhost访问的部分)。我也一直在检查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中我得到了各种各样的“无法找到课程”,你是否忘记了"使用"声明&#39?;错误。其中一些是针对树枝延伸AppBundle/Twig/AppExtension.php

  3. 以下是一些关键的错误:

      

    request.CRITICAL:未捕获的PHP异常InvalidArgumentException:   " Class" AppBundle \ Controller \ HomeController"不存在。"在   /home/travis/var/cache/prod/classes.php第4872行   {" exception":" [object](InvalidArgumentException(code:0):Class   \"的appbundle \控制器\的HomeController \"不存在。在   /home/travis/var/cache/prod/classes.php:4872)"} []

      

    php.CRITICAL:Class' AppBundle \ Twig \ AppExtension'未找到   {"例外":" [对象]   (Symfony \ Component \ Debug \ Exception \ FatalThrowableError(代码:0):   Class' 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:" Attempted   加载类" AppExtension"来自命名空间" AppBundle \ Twig"。你是否   忘记"使用"另一个命名空间的语句?"在   /home/travis/var/cache/prod/appProdProjectContainer.php第2881行   {"例外":" [对象]   (Symfony的\元器件\调试\异常\ ClassNotFoundException的(代码:   0):尝试加载类\" AppExtension \"从命名空间   \" AppBundle \ Twig \"。\ n你忘记了\"使用\"声明另一个   命名空间?在   /home/travis/var/cache/prod/appProdProjectContainer.php:2881)"} []   [2017-01-19 06:35:03] request.CRITICAL:处理时抛出异常   一个例外   (Symfony \ Component \ Cache \ Exception \ InvalidArgumentException:Cache   目录不可写   (/ home / travis / var / cache / prod / pools / CtBqbs + VrF)at   /home/travis/var/cache/prod/classes.php第1194行)   {"例外":" [对象]   (Symfony的\元器件\缓存\异常\ InvalidArgumentException(代码:   0):缓存目录不可写   (/ home / travis / var / cache / prod / pools / CtBqbs + VrF)at   /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 }
    

3 个答案:

答案 0 :(得分:0)

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

检查用户通过

在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会更好。

答案 1 :(得分:0)

尝试清除缓存:

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

并设置文件权限:

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

希望这对你有所帮助。

答案 2 :(得分:-1)

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

  

rm -R vendor /

再次新安装所有依赖项。

  

php composer.phar install

这将解决问题。