我已經創建了一個 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 關注
- 179 瀏覽
添加回答
舉報
0/150
提交
取消