流或文件 \"/var/www/html/storage/logs/laravel.log\" 无法以附加模式打开...权限被拒绝。 gcp“云运行”
Posted
技术标签:
【中文标题】流或文件 \\"/var/www/html/storage/logs/laravel.log\\" 无法以附加模式打开...权限被拒绝。 gcp“云运行”【英文标题】:The stream or file \"/var/www/html/storage/logs/laravel.log\" could not be opened in append mode... Permission denied. gcp "Cloud run"流或文件 \"/var/www/html/storage/logs/laravel.log\" 无法以附加模式打开...权限被拒绝。 gcp“云运行” 【发布时间】:2021-11-15 18:07:50 【问题描述】:来自 php:8.0-apache-buster
#安装所有系统依赖并启用PHP模块 运行 apt-get update && apt-get install -y libpq-开发 libzip-开发 && rm -r /var/lib/apt/lists/* && docker-php-ext-install pdo_pgsql pgsql 拉链
#安装作曲家 运行 curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin/ --filename=composer
#将apache的uid和gid更改为docker用户uid/gid 运行 usermod -u 1000 www-data && groupmod -g 1000 www-data
#将 web_root 更改为 laravel /var/www/html/public 文件夹 运行 sed -i -e "s/html/html/public/g" /etc/apache2/sites-enabled/000-default.conf
启用 apache 模块重写
运行 a2enmod 重写
#复制源文件并运行composer 复制 。 /var/www/html
安装所有 PHP 依赖项
运行 cd /var/www/html
运行 composer install --no-interaction
运行作曲家更新
运行作曲家转储自动加载 #更改我们应用程序的所有权 运行 chown -R www-data:www-data /var/www/html/storage
运行 chown -R www-data:www-data /var/www/html
运行 chown -R www-data:www-data /var/www/html/bootstrap/cache
运行 chmod -R 755 /var/www/html/storage
运行 chmod -R 777 引导
运行 chmod -R 777 /var/www/html
入口点 ["/var/www/html/docker-entrypoint.sh"]
这些是我在 dockerfile 中添加的上述命令,以避免权限错误 但问题是当我在本地系统中运行这个 dockerfile 时,它适用于应用程序 但是当我在云运行上部署并在我的应用程序中输入错误的登录信息时,它给了我这个错误“”消息“:”流或文件“/var/www/html/storage/logs/laravel.log”不能以附加模式打开:无法打开流:权限被拒绝"," 所以我相信dockerfile没有问题,可能是cloud run的配置有问题。我不知道
apache2.conf
<Directory />
Options FollowSymLinks
AllowOverride All
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride All
Require all granted
</Directory>
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
000-default.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/public/
<Directory /var/www/html/>
AllowOverride All
Require all granted
</Directory>
ErrorLog $APACHE_LOG_DIR/error.log
CustomLog $APACHE_LOG_DIR/access.log combined
</VirtualHost>
【问题讨论】:
在变量和秘密下添加 APP_DEBUG=true 和 APP_KEY 应该可以工作 编辑您的问题并在 apache2.conf 中为 laravel/public 条目显示在项目目录的根目录中尝试以下命令。
find . -type d -print0 |xargs -0 chmod 755
find . -type f -print0 |xargs -0 chmod 644
你也可以尝试关注
nginx.dockerfile
FROM nginx:stable-alpine
ADD ./nginx/nginx.conf /etc/nginx/
ADD ./nginx/default.conf /etc/nginx/conf.d/
RUN mkdir -p /var/www/html
RUN addgroup -g 1000 laravel && adduser -G laravel -g laravel -s /bin/sh -D laravel
RUN chown laravel:laravel /var/www/html
php.dockerfile
FROM php:7.4-fpm
ADD ./php/www.conf /usr/local/etc/php-fpm.d/
RUN apt update && apt install -y curl libonig-dev libxml2-dev unzip zlib1g-dev libpng-dev zip libzip-dev && rm -rf /var/lib/apt/lists/*
RUN addgroup --gid 1000 laravel && adduser --ingroup laravel --gecos laravel --shell /bin/sh --disabled-password laravel
RUN mkdir -p /var/www/html
RUN chown laravel:laravel /var/www/html
WORKDIR /var/www/html
RUN docker-php-ext-install pdo pdo_mysql gd zip bcmath mbstring exif pcntl
【讨论】:
感谢您的回复!但正如我所说,我正在运行云运行服务,所以我无法 ssh 用于生产的服务器,但我在执行到我的本地运行容器后将这些命令应用于 /var/www/html,这些命令成功运行,作为响应,我什么也没提供 在 dockerfilechmod g+w storage/logs
中授予组对 /storage/logs/ 的写入权限
我已经更新了我的问题请查看添加的 Docker 文件
我已经更新了答案,看看这是否可以帮助你。我附上了 nginx.dockerfile 和 php.dockerfile 的样本【参考方案2】:
感谢所有帮助过我的人 该问题已得到修复。 在我的 laravel 目录中,每个文件夹的所有者都是 www-data 除了 /logs 所以我单独添加了命令来更改 /logs 的所有者
【讨论】:
以上是关于流或文件 \"/var/www/html/storage/logs/laravel.log\" 无法以附加模式打开...权限被拒绝。 gcp“云运行”的主要内容,如果未能解决你的问题,请参考以下文章
我收到错误日志文件的消息“无法打开流或文件“.../laravel.log”:无法打开流:权限被拒绝” [重复]
linux自动备份计划,我想备份var/www/html/的整个目录,每天2点备份一次,自动删除前两天的备份文件。
我需要“/var/www”,但 Apache2 尝试使用空的“/var/www/html”
无法打开流或文件“/app/storage/logs/laravel.log”:无法打开流:权限被拒绝
xampp ubuntu laravel 无法打开流或文件“/storage/logs/laravel log”:无法打开流:权限被拒绝
laravel - 无法以附加模式打开流或文件“/storage/logs/laravel.log”:无法打开流:权限被拒绝