Git repo del proyecto: https://github.com/tombusby/docker-laravel-experimentos (HEAD al momento de escribir es 823fd22).
Aquí está mi docker-compose.yml:
nginx:
image: nginx:stable
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
volumes_from:
- php
links:
- php:php
ports:
- 80:80
php:
image: php:5.6-fpm
volumes:
- ./src:/var/www/html
expose:
- 9000
En src/ he creado un nuevo proyecto de laravel. Todo esto funciona correctamente si cambio index.php por uno con un básico echo "hello world";
y si uso echo "called";exit();
Puedo identificar que parte de index.php de laravel se ejecuta.
Muere en la línea 53:
$response = $kernel->handle(
$request = Illuminate\Http\Request::capture()
);
No tengo idea de por qué sucede esto, y he intentado usar docker exec -it <cid> bash
para echar un vistazo a mi contenedor php-fpm en busca de registros de errores. Todos los registros se redirigen a stderr/stdout (que recopila Docker).
Aquí está la salida que recopila la ventana acoplable:
php_1 | 172.17.0.3 - 06/May/2016:12:09:34 +0000 "GET /index.php" 500
nginx_1 | 192.168.99.1 - - [06/May/2016:12:09:34 +0000] "GET /index.php HTTP/1.1" 500 5 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36" "-"
Como puede ver, “500” no hace prácticamente nada para ayudarme a determinar por qué hubo un error, pero no puedo encontrar ninguna forma de obtener el seguimiento de la pila ni nada parecido a los registros de error adecuados que habría producido la extensión php de apache.
reino ácido
Según nuestra discusión en ##php en freenode…
Su problema es que la configuración de php.ini “log_errors” está desactivada.
tus opciones son:
- establecer log_errors=On en php.ini
- establecer php_admin_flag[log_errors]= Activado en la configuración de su grupo (para el contenedor docker basado en
php:5.6-fpm
eso esta en el archivo/usr/local/etc/php-fpm.conf
) - o posiblemente establecer log_errors=On en .user.ini (configuración por directorio de php, similar a .htaccess)
-
finalmente algo que funciona, ¡he estado buscando esto por mucho tiempo!
php_admin_flag[log_errors]=On
– pipí
29 de noviembre de 2016 a las 9:24
Como puedo ver, está ejecutando la solicitud de una Mac, ¿el entorno docker también está configurado en Mac? Si es así, al ejecutar bash en el contenedor php-fpm, ¿puede intentar escribir en el volumen expuesto? (/var/www/html
en el contenedor)
-
Ese no es el problema. Todo funciona correctamente para una aplicación básica de Hello World. Mi problema es que obtengo un 500 y quiero ver los registros para averiguar por qué sucedió eso. No puedo encontrar ningún registro.
– Tom Busby
6 mayo 2016 a las 12:56
-
¿Qué quieres decir con una “aplicación hola mundo”?
–Luigi Pressello
6 mayo 2016 a las 13:42
-
como en, “hola mundo”:
– Tom Busby
6 mayo 2016 a las 13:56
-
– Tom Busby
6 mayo 2016 a las 13:56
-
Creo que nos estamos confundiendo aquí: solo quiero saber cómo obtener los registros. No estoy tan interesado en resolver lo que está causando el error, como en obtener los registros de errores.
– Tom Busby
6 mayo 2016 a las 13:57
estoy frente a un muy problema similar… ¿alguna vez encontró la causa raíz del problema?
– chrisvdb
16 de junio de 2016 a las 3:51
La respuesta aceptada resolverá su problema. La configuración predeterminada de php-fpm de la ventana acoplable oficial tiene errores desactivados. Si intenta habilitarlo con
ini_set
o similar, entonces php-fpm ignora eso. Debe configurarlo en el archivo de configuración php-fpm usandophp_admin_flag[log_errors]
. Hice esto haciendo que mi ventana acoplable componga el montaje de un archivo de configuración costom php-fpm sobre el volumen existente como un volumen de solo lectura.– Tom Busby
16 de junio de 2016 a las 11:46
Además, si esta pregunta describe un problema que está teniendo, siempre se agradecen los votos a favor;)
– Tom Busby
16 de junio de 2016 a las 11:48
Hecho. En realidad, quise decir que su problema base (Laravel no funciona, no los registros no funcionan) sonaba muy similar. Al final, habilité el registro como se sugirió y descubrí que el problema estaba relacionado con los permisos de arranque/caché y directorios de almacenamiento. Agregar RUN chmod -R 777 al Dockerfile resolvió el problema. Sin embargo, no estoy del todo seguro de si hay soluciones más elegantes.
– chrisvdb
17 de junio de 2016 a las 6:32
Ahhh, vale, seguro. Sí, puedes 777 tus permisos, pero si eso te hace sentir sucio:
user = 1000
ygroup = staff
en su php-fpm.conf solucionará los problemas de permisos (para Mac Docker, pero los problemas los causan para los hosts de Linux).– Tom Busby
17 de junio de 2016 a las 15:28