Tengo una API de Symfony 3 y estoy tratando de registrar un usuario pero tengo un error 500 al ejecutar una solicitud POST (la solicitud GET funciona). Probablemente sea un problema con mi configuración de Apache porque no tengo ningún error en mis archivos de registro. Un var_dump('ok')
en la parte superior de mi función también me da el error 500.
Mi configuración de 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>
Línea agregada en mi archivo de hosts:
127.0.0.1 subscription.api.local www.subscription.api.local
Mi proyecto está en el directorio ~/Projects/subscription_backend
y uso un símbolo para /var/www/subscription_backend
:
sudo ln -s ~/Projects/subscription_backend /var/www/subscription_backend
Permisos del "directorio ~/Projects/subscription_backend":
Permisos de "/var/www/subscription_backend directory": lrwxrwxrwx 1 www-data www-data 55 avril 19 21:45 /var/www/subscription_backend -> /home/khan/Projects/subscription_backend/
¿Qué tiene de malo mi configuración? ¿Por qué la solicitud GET funciona pero no POST?
Gracias
Finalmente, resolví el problema.
Primero, corrige los permisos 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 -mu:"$HTTPDUSER":rwX -mu:$(whoami):rwX var sudo setfacl -R -mu:"$HTTPDUSER":rwX -mu:$(whoami):rwX var composer install
Luego instale la extensión Memcache:
sudo apt-get install memcached sudo apt-get install php-memcached sudo apt-get install php-memcache sudo service apache2 restart
Limpiar cache:
bin/console c:c bin/console c:c --env=prod