首页 > 解决方案 > Symfony on Xampp (Apache) 问题:页面未加载

问题描述

我的 Apache 本地服务器在 XAMPP 上运行。我创建了新的 symfony 项目并且从一开始就遇到了问题。页面未加载。然后我使用以下命令安装了 .htaccess:

composer require symfony/apache-pack

它仍然没有工作。然后大约一个小时后,它开始自行工作。(我不确定我是否刷新了页面)。

无论如何,在使用控制器进行一些手动更改后,页面再次停止加载。

它说:

无法访问此站点

连接被重置。

ERR_CONNECTION_RESET

在此处输入图像描述

我真的不知道是什么导致了这个问题。

Apache 正在运行,其他项目(不是 Symfony)也运行良好。只有这个 symfony 项目是有问题的。

我想我已经正确设置了一切:

httpd-vhost 文件:

<VirtualHost *:80>
    DocumentRoot "C:/xampp/htdocs/myproject/public"
    ServerName myproject
</VirtualHost>

主机文件:

127.0.0.1   myproject

.htaccess 文件(由composer require symfony/apache-pack命令创建):

DirectoryIndex index.php

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

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{REQUEST_URI}::$0 ^(/.+)/(.*)::\2$
    RewriteRule .* - [E=BASE:%1]

    RewriteCond %{HTTP:Authorization} .+
    RewriteRule ^ - [E=HTTP_AUTHORIZATION:%0]

    RewriteCond %{ENV:REDIRECT_STATUS} =""
    RewriteRule ^index\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ %{ENV:BASE}/index.php [L]
</IfModule>

<IfModule !mod_rewrite.c>
    <IfModule mod_alias.c>
        RedirectMatch 307 ^/$ /index.php/
    </IfModule>
</IfModule>

所以我真的不知道如何解决这个问题。我尝试清除网络浏览器中的缓存,但没有帮助。

编辑:当我更改 index.php 而不是 symfony 代码时,它可以工作:

<?php

use App\Kernel;

require_once dirname(__DIR__).'/vendor/autoload_runtime.php';

return function (array $context) {
    return new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']);
};

我尝试使用:

<?php
echo "Hello World!";

它呼应

你好世界

有任何问题。

编辑2:似乎问题出在路由上。当我创建 MainController.php (作为一个新文件)它停止工作。当我删除整个文件时,它又开始工作了。删除文件的内容是不行的,我真的需要删除实际的文件才能让它再次工作。诡异的。

编辑 3:这是我的 dev.log 文件的一些内容:

[2021-11-07T20:21:04.744060+01:00] php.DEBUG: Warning: DOMDocument::schemaValidateSource(): Invalid Schema {"exception":{"Symfony\\Component\\ErrorHandler\\Exception\\SilencedErrorContext":{"severity":2,"file":"C:\\xampp\\htdocs\\myproject_cz\\vendor\\symfony\\translation\\Util\\XliffUtils.php","line":113,"trace":[{"file":"C:\\xampp\\htdocs\\myproject_cz\\vendor\\symfony\\translation\\Util\\XliffUtils.php","line":64,"function":"shouldEnableEntityLoader","class":"Symfony\\Component\\Translation\\Util\\XliffUtils","type":"::"}],"count":1}}} []

[2021-11-07T20:39:31.249487+01:00] request.ERROR: Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "No route found for "GET http://myproject_cz/"" at C:\xampp\htdocs\myproject_cz\vendor\symfony\http-kernel\EventListener\RouterListener.php line 136 {"exception":"[object] (Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException(code: 0): No route found for \"GET http://myproject_cz/\" at C:\\xampp\\htdocs\\myproject_cz\\vendor\\symfony\\http-kernel\\EventListener\\RouterListener.php:136)\n[previous exception] [object] (Symfony\\Component\\Routing\\Exception\\NoConfigurationException(code: 0):  at C:\\xampp\\htdocs\\myproject_cz\\vendor\\symfony\\routing\\Matcher\\Dumper\\CompiledUrlMatcherTrait.php:182)"} []

[2021-11-07T20:39:31.518751+01:00] request.INFO: Matched route "_wdt". {"route":"_wdt","route_parameters":{"_route":"_wdt","_controller":"web_profiler.controller.profiler::toolbarAction","token":"61c0ae"},"request_uri":"http://myproject_cz/_wdt/61c0ae","method":"GET"} []

我猜 request.ERROR 将是导致问题的原因。

编辑 4:上面的所有日志报告都是在尚未创建控制器时通过刷新默认 symfony 页面生成的。所以它们都是无关紧要的。

当我创建一个新控制器时(通过从 Symfony 文档中复制 LuckyController 示例或使用命令:)$ php bin/console make:controller MainController不再生成日志并且页面停止加载。它实际上似乎在每次刷新后加载了几秒钟,但随后它最终被 ERR_CONNECTION_RESET 页面卸载。

标签: apachesymfonyxampplocalhost

解决方案


推荐阅读