Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /usr/share/nginx/html/index.php:1) in /usr/share/nginx/html/conf.php on line 2
session_start()
の前に改行とかあるのではないの?
という指摘が多い中、本番ではエラー出てないし、改行などないんだけどなぁと悩んでいたところこちらの記事を発見。
解決方法
php.ini
をDockerコンテナに設置して、output_buffering = 4096
を設定。
コンテナ再起動したら、エラーは解消された。
php.ini
output_buffering = 4096
これを config/php.ini
として設置。
おまけ
docker-compose.yml
version: '3'
services:
web:
restart: 'yes'
image: nginx:alpine
ports:
- "8080:80"
restart: always
volumes:
- ./config/default.conf:/etc/nginx/conf.d/default.conf
- ./dist:/usr/share/nginx/html
depends_on:
- app
app:
image: php:5-fpm-alpine
volumes:
- ./config/php.ini:/usr/local/etc/php/conf.d/php.ini
- ./dist:/usr/share/nginx/html
ports:
- "9000:9000"
working_dir: /usr/share/nginx/html
こちらは config/default.conf
に置いたnginxの設定
default.conf
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
index index.php;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(\.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}