我正在用Symfony 5.3和PHP8.0.12做一个项目。我一直在自己的电脑上开发它,它运行得很好。现在我想把它部署在一个远程容器上。
然而,当我启动内置于Web服务器的Symfony时,在访问任何定义的路由时,我会收到以下错误:
issue with server callback error="unable to fetch the response from the backend: malformed MIME header: missing colon: "FROM information_schema.schemata""
在这两种情况下(在我的计算机上和在容器中),服务器都连接到远程PostgreSQL数据库。容器连接到数据库似乎没有任何问题,因为我可以使用psql命令手动连接。
我试过重新安装Symfony(Symfony CLI版本v4.26.8)、Composer(版本2.1.12)和大多数PHP库,但没有任何改变。
我不知道问题出在哪里。如果能提供帮助,我将不胜感激。
下面是我的 composer .json:
{
"type": "project",
"license": "proprietary",
"minimum-stability": "stable",
"prefer-stable": true,
"require": {
"php": ">=7.2.5",
"ext-ctype": "*",
"ext-iconv": "*",
"ext-json": "*",
"composer/package-versions-deprecated": "1.11.99.2",
"doctrine/annotations": "^1.13",
"doctrine/doctrine-bundle": "^2.4",
"doctrine/doctrine-migrations-bundle": "^3.1",
"doctrine/orm": "^2.9",
"lexik/jwt-authentication-bundle": "^2.13",
"sensio/framework-extra-bundle": "^6.2",
"symfony/apache-pack": "^1.0",
"symfony/dotenv": "5.3.*",
"symfony/flex": "^1.15",
"symfony/framework-bundle": "5.3.*",
"symfony/http-foundation": "5.3.*",
"symfony/ldap": "5.3.*",
"symfony/proxy-manager-bridge": "5.3.*",
"symfony/security-bundle": "5.3.*",
"symfony/stopwatch": "5.3.*",
"symfony/web-profiler-bundle": "5.3.*",
"symfony/property-access": "5.3.*",
"symfony/runtime": "5.3.*",
"symfony/security-csrf": "5.3.*",
"symfony/serializer": "5.3.*",
"symfony/yaml": "5.3.*"
},
"config": {
"optimize-autoloader": true,
"preferred-install": {
"*": "dist"
},
"sort-packages": true
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"App\\Tests\\": "tests/"
}
},
"replace": {
"symfony/polyfill-ctype": "*",
"symfony/polyfill-iconv": "*",
"symfony/polyfill-php72": "*"
},
"scripts": {
"auto-scripts": {
"cache:clear": "symfony-cmd",
"assets:install %PUBLIC_DIR%": "symfony-cmd"
},
"post-install-cmd": [
"@auto-scripts"
],
"post-update-cmd": [
"@auto-scripts"
]
},
"conflict": {
"symfony/symfony": "*"
},
"extra": {
"symfony": {
"allow-contrib": false,
"require": "5.3.*"
}
},
"require-dev": {
"symfony/maker-bundle": "^1.33"
}
}
4条答案
按热度按时间tquggr8v1#
我在php-alpine容器中使用
symfony server:start
和docker时遇到过这个错误。每次我在新安装的示例中运行migrations或doctrine:schema:update时,我的symfony本地web服务器都会抛出错误:issue with server callback error="unable to fetch the response from the backend: malformed MIME header: missing colon: "FROM information_schema.schemata
我通过删除alpine容器并从FROM ubuntu:20.04
图像构建所有内容来解决这个问题:我不得不安装php,驱动程序和所有的依赖项。这并不适合我的生产环境,因为映像超过1GB,这意味着它有我在生产中不需要的二进制文件。根据经验,symfony本地网络服务器需要一个python环境,但我不确定。几天后,我偶然发现了这个git仓库:https://github.com/dunglas/symfony-docker。Symfony文档中建议使用的文件,网址为:Using Docker with Symfony。它使用caddy作为web服务器。我从它那里学到了东西,调整以适应我的需要,从那时起就再也没有使用symfony本地web服务器。这是一个很好的项目,值得表扬Kévin Dunglas和维护者。php映像大约是200 MB。Caddy也是大约40 MB。对于生产和开发环境都很好。
请仔细阅读回购协议,并采取你能或一切。
**免责声明:**这不是对您的问题/错误的回答,而是一个简单的替代方案。
piwo6bdm2#
我在运行docker(ubuntu)时也遇到过同样的问题。虽然我不完全确定为什么会发生这种情况,但我设法找到了一个简单的解决方法:
不知道为什么会这样,但是当你在Docker中运行它的时候,一切都很好,你可以在
CONTAINER_IP:8000
打开你的应用程序。我决定把这个贴在这里,因为我花了3个小时才弄明白,所以希望这能节省一些人的时间。
qybjjes13#
我的快速解决方案是从文件中的查询中删除新行:
vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/MySqlPlatform.php
方法:getListTableMetadataSQL
从
至:
当然,它在composer安装后返回,但这显示了问题的根源
BeforeAfter显示器
uqzxnwby4#
对我来说-这是“var”目录的权限问题。也在Docker中。
使目录可写解决了此问题。