使用Laravel和Docker出现了500(内部服务器错误)。

15 浏览
0 Comments

使用Laravel和Docker出现了500(内部服务器错误)。

这个问题已经在这里有答案了

如何使PHP错误显示?

我在Docker中创建了Laravel PHP应用程序。首先,我使用

laravel new laravelDockerApp

来设置Laravel应用程序,它成功创建。我通过内置服务器验证了它的设置

php artisan serve

然后使用Docker设置本地环境

docker-compose.yml

version: '2'
services:
  web:
    build:
      context: ./
      dockerfile: web.docker
    volumes:
      - ./:/var/www
    ports:
      - "8080:80"
    links:
      - app
  app:
    build:
      context: ./
      dockerfile: app.docker
    volumes:
      - ./:/var/www

app.docker

FROM php:7-fpm
RUN apt-get update && apt-get install -y libmcrypt-dev mysql-client \
    && docker-php-ext-install mcrypt pdo_mysql
WORKDIR /var/www

web.docker

FROM nginx:1.10
ADD ./vhost.conf /etc/nginx/conf.d/default.conf
WORKDIR /var/www

vhost.conf

server {
    listen 80;
    index index.php index.html;
    root /var/www/public;
    location / {
        try_files $uri /index.php?$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;
    }
}

我运行docker-compose up -d命令。app和web容器成功启动。当我使用浏览器检查应用程序时,使用

localhost:8080

我得到

500(内部服务器错误)

请问可以帮助解决吗?谢谢。

admin 更改状态以发布 2023年5月22日
0
0 Comments

这个解决方案可能不适用于您,因为您正在使用Nginx,但在我的情况下,我正在使用php:7.0-apache作为源图像,所以我将Apache用户设置为我的应用程序文件的所有者。

在我的Dockerfile中,我有:

...
USER www-data
WORKDIR /var/www/html
COPY --chown=www-data:www-data . .
...

这样解决了问题,所以值得尝试,可以修改Dockerfile或者Docker Compose在挂载卷时具有一些用户权限选项。

0
0 Comments

我找到了一个解决方案。我使用以下方式设置了我的Laravel应用程序的权限:

sudo chmod -R 777 storage && sudo chmod -R 777 bootstrap/cache

0