Symfony 3.1:请求app_dev.php或app.php时出错

时间:2016-10-08 01:01:40

标签: apache symfony

我在请求sorial/app_dev.php时得到此信息:

Not Found

The requested URL /app_dev.php/ was not found on this server.

请求sorial/app.php时:

  

取消注册(); $ apcLoader->寄存器(真); * / $ kernel = new   AppKernel('prod',false); $内核级> loadClassCache(); // $ kernel = new   应用程序缓存($内核); //使用HttpCache时,需要调用   前端控制器中的方法而不是依赖于   配置参数   //请求:: enableHttpMethodParameterOverride(); $ request =   支持:: createFromGlobals(); $ response = $ kernel-> handle($ request);   $响应 - >置于(); $ kernel-> terminate($ request,$ response);

我在Ubuntu 14.04和Apache 2.4

编辑:这是我的虚拟主机:

<VirtualHost *:80>
    ServerName sorial
    #ServerAlias sorial.es
    DocumentRoot /var/www/sorial/web
        DirectoryIndex app.php
    #SetEnv SYMFONY__DATABASE__PASSWORD jander
    <Directory /var/www/sorial/web/>
        # Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        #Order allow,deny
        #allow from all
        Require all granted
        FallbackResource /index.php
        # BEGIN EXPIRES
        <IfModule mod_expires.c>
            ExpiresActive On
            ExpiresDefault "access plus 10 days"
            ExpiresByType text/css "access plus 1 week"
            ExpiresByType text/plain "access plus 1 month"
            ExpiresByType image/gif "access plus 1 month"
            ExpiresByType image/png "access plus 1 month"
            ExpiresByType image/jpeg "access plus 1 month"
            ExpiresByType application/x-javascript "access plus 1 month"
            ExpiresByType application/javascript "access plus 1 week"
            ExpiresByType application/x-icon "access plus 1 year"
        </IfModule>
        # END EXPIRES
    </Directory>
</VirtualHost>

我的文档根位于/var/www/sorial/web

事实是我对其他网站也有同样的问题。当我尝试使用env_mod禁用/启用a2dismod env时问题就出现了,因为在添加变量SetEnv时(正如您在虚拟主机中看到的那样)我得到了

  

apache2.service的作业失败,因为控制进程已退出   错误代码。请参阅“systemctl status apache2.service”和“journalctl”   -xe“了解详情。

重启apache时。

4 个答案:

答案 0 :(得分:4)

我终于解决了我的问题安装php5和libapache2-mod-php5,如下所示:sudo apt-get install php5 libapache2-mod-php5

答案 1 :(得分:2)

  

我终于解决了我的安装php5和libapache2-mod-php5这样的问题:sudo apt-get install php5 libapache2-mod-php5 - @ziiweb

您收到的错误通常是由配置文件丢失或损坏引起的。

  

apache2.service的作业失败,因为控制进程退出并显示错误代码。请参阅&#34; systemctl status apache2.service&#34;和&#34; journalctl -xe&#34;详情。

journalctl命令can be used以查看更多详情。

$ journalctl | tail
AH00526: Syntax error on line 5 of /etc/apache2/sites-enabled/mydomain-wsf.lan.conf

您也可以进行Apache配置测试。

$ apachectl configtest
Syntax OK

$ sed -i 's/SetEnv/SetEnvFoobar/' /etc/apache2/sites-enabled/test.conf

$ apachectl configtest
AH00526: Syntax error on line 12 of /etc/apache2/sites-enabled/test.conf:
Invalid command 'SetEnvFoobar', perhaps misspelled or defined by a module not included in the server configuration
Action 'configtest' failed.
The Apache error log may have more information.

apachectl graceful命令也非常有用。它重新启动Apache,但在启动重启之前首先运行configtest &#34;以确保Apache不会死。&#34;

  

apachectl graceful

     

正常重启Apache httpd守护程序。如果守护程序未运行,则启动它。这与正常重启不同,因为当前打开的连接不会中止。副作用是旧的日志文件不会立即关闭。这意味着,如果在日志轮换脚本中使用,则可能需要大量延迟以确保在处理旧日志文件之前将其关闭。在启动重启之前,此命令会自动检查configtest中的配置文件,以确保Apache不会死。这相当于apachectl -k graceful

     

- Apache Docs

重新安装软件可以正常工作,因为它可以修复任何丢失的配置文件。

$ apt-get install --resinstall libapache2-mod-php5 php5 

另一个替代方法noted here是清除然后安装。 然而,知道purge是破坏性命令非常重要,这意味着它将删除所有现有配置文件。这几乎相当于全新安装。

$ apt-get purge libapache2-mod-php5 php5
$ apt-get install libapache2-mod-php5 php5 

答案 2 :(得分:1)

好吧,我使用Debian和apache作为服务器时遇到了同样的问题。尝试替换 web 目录中的 .htaccess 并清除缓存。

DirectoryIndex app.php

<IfModule mod_negotiation.c>
  Options -MultiViews
</IfModule>

RewriteEngine On
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^app_dev.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L] 
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .? - [L]
RewriteRule .? %{ENV:BASE}/app_dev.php [L] 

这应该是你的虚拟主机

<VirtualHost *:80>
 ServerName sorial

 DocumentRoot /var/www/sorial/web
 <Directory /var/www/sorial/web>
    AllowOverride All
    Order Allow,Deny
    Allow from All

 </Directory>

 ErrorLog /var/log/apache2/project_error.log
 CustomLog /var/log/apache2/project_access.log combined

</VirtualHost>

答案 3 :(得分:1)

实际上,在我的配置中我使用.htaccess文件,我看到你已经注释掉了选项行。我想知道你是否有理由这样做?

如果没有,我会建议将其取消注释:

<Directory /var/www/sorial/web/>
    Options Indexes FollowSymLinks MultiViews

看看是否有效。