我已经创建了一个 repo,用于在 PHP7.3 上使用 Docker 设置 WP,在 php-fpm 上使用最新的 WordPress,我遇到了同样的问题:https : //github.com/dingo-d/wordpress-docker你可以检查一下,看看可能是什么问题。我的猜测是 PHP-FPM 必须是问题所在(因为重新启动该容器会使更改传播)。我按照我在此处找到的教程创建了一个 WordPress docker 本地开发环境。基本上,我所有的 docker 东西都位于.docker文件夹中。我在.docker文件夹中有这些文件|--project-folder|____.docker| |____php-fpm| | |____php.ini| | |____Dockerfile| |____nginx| | |____Dockerfile| | |____logs| | | |____error.log| | | |____access.log| | |____certs| | | |____dev.project.com.key| | | |____dev.project.com.crt| | |____scripts| | | |____docker-nginx-entrypoint.sh| | |____nginx.conf| |____.dockerignore| |____.env| |____docker-compose.yml| |____.env.example在尝试使用自签名 SSL 证书设置所有内容后,我可以登录https://localhost:8443(我在设置主机文件时https://dev.project.com遇到了一些问题,以便我可以访问,但这是另一个问题)。问题是,当我去更改我的主题中的某些内容时,比如添加一个print_r应该只打印出一些内容的语句,只有在我重新启动 WordPress 应用程序容器后,我才能在 WP 管理员中看到该更改。文件夹被映射,当我在本地更改内容并执行到容器时,这些更改会立即存在(当我在容器中执行时删除它们时,它们会立即在我的编辑器中删除)。我已经测试过我在网上找到的一个超级简单的 WordPress Docker 设置是否会发生同样的事情version: '3'services: db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: wordpress MYSQL_USER: user MYSQL_PASSWORD: password app: depends_on: - db image: wordpress:latest ports: - "8000:80" restart: always volumes: - ./wp-content/:/var/www/html/wp-content environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: user WORDPRESS_DB_PASSWORD: passwordvolumes: db_data:当我启动它并转到localhost:8000我可以立即看到更改而无需重新启动容器(当我在编辑器中编辑文件时)。
1 回答
qq_笑_17
TA贡献1818条经验 获得超7个赞
所以事实证明,罪魁祸首是opcache
. 或者更确切地说,我在网上找到了一些例子,只是将它添加到我的,php.ini
而没有试图理解这实际上意味着什么。
在阅读了这篇文章和这篇解释了一些 opcache 设置的优秀文章后,我意识到我的php.ini
文件有
opcache.revalidate_freq=60
您不应该在本地开发环境中使用它!
使用 with 时opcache.validate_timestamps
,PHP 会检查revalidate_freq
设置并将其用作时间戳 - 如果您在 60 秒内发出请求(如上面的示例),代码将从 opcache 中提取 - 您将不会在浏览器中看到任何更改. 只有在 60 秒后才能看到此更改。
所以将它设置为 0(检查每个请求的代码)可以解决这个问题。
故事要点:检查所有内容并阅读您使用的每个设置!
对我来说“不幸的是”我正在阅读 nginx 配置,因为我认为我在那里搞砸了一些东西😁
- 1 回答
- 0 关注
- 157 浏览
添加回答
举报
0/150
提交
取消