fix(security): avoid world-writable storage in Laravel multi-stage examples

两处 Laravel 多阶段构建示例把 storage 目录设为 chmod -R 777,且全文没有任何
警告或说明,读者复制粘贴即得到 session/cache/log 目录全局可写的生产镜像。
这与本书 7.11(USER)与第 18 章的最小权限指引相矛盾。

改为将 storage 归属 www-data(php:8.3-fpm-alpine 中 php-fpm worker 的运行用户)
并设为 775:构建期 artisan 以 root 运行不受影响,运行期 www-data 仍可写。
This commit is contained in:
yeasy
2026-07-16 23:20:25 -07:00
parent 288212bbe9
commit 7340cc16a8
@@ -121,7 +121,8 @@ RUN set -x ; cd ${LARAVEL_PATH} \
&& mkdir -p storage/framework/testing \
&& mkdir -p storage/framework/views \
&& mkdir -p storage/logs \
&& chmod -R 777 storage \
&& chown -R www-data:www-data storage \
&& chmod -R 775 storage \
&& php artisan package:discover
```
@@ -226,7 +227,8 @@ RUN set -x ; cd ${LARAVEL_PATH} \
&& mkdir -p storage/framework/testing \
&& mkdir -p storage/framework/views \
&& mkdir -p storage/logs \
&& chmod -R 777 storage \
&& chown -R www-data:www-data storage \
&& chmod -R 775 storage \
&& php artisan package:discover
FROM nginx:1.28-alpine as nginx