__DIR__ Laravel 中只有 returns 部分路径 - 缺少一个文件夹

__DIR__ only returns part of the path in Laravel - missing one folder

我正在使用 Laradock/Docker 和 apache2 网络服务器。

localhost 指向 /Users/paul/Sites(在 Mac Monterey 上正常)

我有一个 laravel 8 项目位于 /Users/paul/Sites/ProjectX。

在 /Users/paul/Sites/ProjectX/index.php 中,我有 echo DIR;

在浏览器中,localhost/ProjectX returns /var/www/ProjectX。为什么 DIR 常量中缺少“站点”文件夹?这正常吗?

我正在扯我的头发......这看起来很微不足道,但我找不到答案......请帮忙。

完全符合预期。

是指return当前运行脚本的绝对目录路径。

Laradock makes use of bind mounts 主机 上的“应用程序代码路径”(/Users/paul/Sites/ProjectX)挂载到 docker 容器 在此“应用程序代码路径”(/var/www/ProjectX)。这使您可以立即预览您的应用程序代码更改,而不必在每个 change/edit.

复制 源代码

docker-compose.yml

# ...
    workspace:
      build:
        context: ./workspace
        args:
# ...
      volumes:
        - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG}

考虑到这一点,很明显这两个环境具有独立的文件系统

当您在 主机 上的浏览​​器中发出 HTTP 请求时,该 HTTP 请求将“转发”到 docker container listening on that specific port。即:

# ...
      ports:
        - "${APACHE_HOST_HTTP_PORT}:80"
        - "${APACHE_HOST_HTTPS_PORT}:443"
# ...

了解您的 HTTP 请求将由特定的 docker 容器(即 Apache/Nginx)而不是 主机处理,执行 echo __DIR__; 将导致脚本的绝对 mounted 目录路径基于 docker 容器的文件系统.