首页 > 解决方案 > 在 Windows 上的 docker 中运行时找不到 PHP 文件

问题描述

在工作中,我在一台装有 Windows 10 Pro + Windows Subsystem for Linux (WSL) + Docker 的笔记本电脑上工作。我面临的问题如下。

我正在为 TYPO3 CMS 开发一个插件。我有一个docker-compose为我设置整个环境的脚本。我使用 Nginx、PHP 7.2 FPM 和 MySQL 5.6。但是在安装 TYPO3 9LTS 并转到它的后端之后,我得到了大量的 PHP 错误,例如

PHP Warning: include('./vendor/autoload.php'): failed to open stream: No such file or directory

但是文件实际上是存在的!这个问题完全是随机的。有时它会加载这个文件,但随后它在想要包含另一个文件时死掉了。

文件权限似乎很好。我用 2 个不同docker-compose的脚本尝试了这个,并且都有同样的问题。但是,当我在本机 Linux 上尝试它们时,它们可以完美运行。

我应该提一下,我已经在 WSL 和 docker 上为 CMS 版本 7 安装了某种工作的 TYPO3。有时我也会收到No such file or directory错误消息,但在浏览器中刷新后就没事了。虽然 Docker 设置是相似的(网络服务器映像只是不同 - 带有 PHP 7.2 的 Ubuntu 18.04 与带有 PHP 7.0 的 Ubuntu 16.04),但它对于 TYPO3 版本 9 根本不起作用。

我使用以下 docker composer 样板:

  1. https://phpdocker.io/generator - PHP 7.2、nginx 和 MySQL(不包括其他所有内容)
  2. https://github.com/webdevops/TYPO3-docker-boilerplate - 与上面非常相似。在Dockerfile.development我更改了要从中提取的图像webdevops/php-nginx-dev:ubuntu-18.04

我还没有尝试在 Apache + mod_php 上运行它,但我可能会。只是我习惯了 nginx,所以我更喜欢在 Apache 上使用它。

标签: phpwindowsdockertypo3windows-subsystem-for-linux

解决方案


推荐阅读