Laravel 生成的所有静态文件中的响应 404 URL

Laravel response 404 in all static files for generated URL

我在 docker 上使用 Laravel 7、PHP 7.4 运行,配置如下:

FROM php:7.4-fpm

RUN apt-get update
RUN apt-get install -y autoconf pkg-config libssl-dev
RUN docker-php-ext-install bcmath sockets
RUN apt-get install -y libpq-dev 

RUN curl -sS https://getcomposer.org/installer | php \
        && mv composer.phar /usr/local/bin/ \
        && ln -s /usr/local/bin/composer.phar /usr/local/bin/composer

ENV COMPOSER_ALLOW_SUPERUSER 1

WORKDIR /website

ENTRYPOINT ["php", "-S", "0.0.0.0:8080", "-t", "/website"]

我把所有的资源都存放在目录中:public/assets

所有 URL 回复都是 404 Not Found 如下图所示:

我使用以下代码在视图中生成了 URL:

<link rel="shortcut icon" href="{{ url('assets/images/favicon.ico') }}">

需要更多信息。

检查 folder/files 的 owner/group。 这是使用 docker.

时的常见问题

Laravel 应用程序从 public 文件夹内的 index.php 开始。

您的内置 PHP 服务器正在侦听 /website 文件夹,但它必须侦听 /website/public 文件夹。

现在您可以访问此地址的图像:http://0.0.0.0:8080/public/assets/images/favicon.ico 使用错误的入口点配置。

此配置存在漏洞:

  • 当部署到生产环境时,public 可以访问所有应用程序文件夹。 (app/bootstrap/storage/resources 等文件夹...)
  • 并且您只能访问带有 /public 前缀的路由,因为您必须从 public/index.php 开始 Laravel.

因此,您的入口点必须是: ENTRYPOINT ["php", "-S", "0.0.0.0:8080", "-t", "/website/public"]