php - 在 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 样板:
- https://phpdocker.io/generator - PHP 7.2、nginx 和 MySQL(不包括其他所有内容)
- https://github.com/webdevops/TYPO3-docker-boilerplate - 与上面非常相似。在
Dockerfile.development
我更改了要从中提取的图像webdevops/php-nginx-dev:ubuntu-18.04
我还没有尝试在 Apache + mod_php 上运行它,但我可能会。只是我习惯了 nginx,所以我更喜欢在 Apache 上使用它。
解决方案
推荐阅读
- android - android relativelayout高度无法正确工作
- html - 隐藏的上传表单不会在 Angular 中注册更改事件
- python - 我如何为python中的字节保留内存并在nasmx64程序集中一一读取?
- c# - Serilog - .Net Core 3.1 - 控制台应用程序 - 不记录到文件(但记录到控制台)
- eclipse - Eclipse:如何更改当前单词背景颜色?
- java - Retrofit/OkHttp 移除 Transfer-Encoding 标头
- android - 无法使用 Android Management API 重新启动设备
- node.js - 有没有使用 Puppeteer 消除所有模式和 cookie 警告的通用方法?
- azure-devops - 在 azure devops 中签署 android 应用程序包时出错
- python - Python Tkinter 按钮数量根据选定的 RadioButton 更改