首页 > 解决方案 > Symfony 3 / Apache - 发布请求给出错误 500

问题描述

我有一个 Symfony 3 API,我正在尝试注册用户,但在执行 POST 请求时出现错误 500(GET 请求有效)。这可能是我的 Apache 配置有问题,因为我的日志文件中没有任何错误。var_dump('ok')我函数顶部的A也给了我错误 500。

我的 Apache 配置:

<VirtualHost *:80>
    ServerName subscription.api.local
    ServerAlias www.subscription.api.local

    DocumentRoot /var/www/subscription_backend/web
    DirectoryIndex /app.php

    <Directory /var/www/subscription_backend/web>
        AllowOverride None
        Order Allow,Deny
        Allow from All

        FallbackResource /app.php
    </Directory>

    <Directory /var/www/subscription_backend>
        Options FollowSymlinks
    </Directory>

    <Directory /var/www/subscription_backend/web/bundles>
        FallbackResource disabled
    </Directory>

    ErrorLog /var/log/subscription-error.log
    CustomLog /var/log/subscription-access.log combined
</VirtualHost>

在我的主机文件中添加的行:

127.0.0.1 subscription.api.local www.subscription.api.local

我的项目在~/Projects/subscription_backend 目录中,我使用符号来/var/www/subscription_backend

sudo ln -s  ~/Projects/subscription_backend /var/www/subscription_backend

“~/Projects/subscription_backend 目录”的权限: 在此处输入图像描述

“/var/www/subscription_backend 目录”的权限: lrwxrwxrwx 1 www-data www-data 55 avril 19 21:45 /var/www/subscription_backend -> /home/khan/Projects/subscription_backend/

我的配置有什么问题?为什么 GET 请求有效但 POST 无效?

谢谢

标签: apachesymfony

解决方案


最后,我解决了这个问题。

首先,修复权限https://symfony.com/doc/3.3/setup/file_permissions.html

cd ~/Projects/subscription_backend

rm -rf var/cache/*
rm -rf var/logs/*
HTTPDUSER=$(ps axo user,comm | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data [n]ginx' | grep -v root | head -1 | cut -d\  -f1)

sudo setfacl -dR -m u:"$HTTPDUSER":rwX -m u:$(whoami):rwX var
sudo setfacl -R -m u:"$HTTPDUSER":rwX -m u:$(whoami):rwX var
composer install

然后安装 memcache 扩展:

sudo apt-get install memcached
sudo apt-get install php-memcached
sudo apt-get install php-memcache
sudo service apache2 restart

清除缓存:

bin/console c:c
bin/console c:c --env=prod

推荐阅读