cPanel Git部署WordPress时PHP文件无法部署的问题排查
问题排查与解决方案
你的PHP文件部署失败,大概率是以下几个原因之一,对应解决方法如下:
1. 仓库文件未同步到BitBucket
先确认本地的PHP文件已经提交并推送到BitBucket:
- 执行
git status检查是否有未跟踪的PHP文件(比如wp-config.php可能被.gitignore排除了); - 如果文件在
.gitignore中,临时移除规则后提交(注意:wp-config.php含敏感信息,建议后续改用cPanel的环境变量或配置文件管理,避免提交到代码仓库); - 执行
git push确保所有PHP文件已同步到BitBucket远程仓库。
2. cPanel部署的工作目录不匹配
cPanel Git部署会将仓库克隆到临时工作目录(而非public_html),所有任务命令都是基于这个临时目录执行的:
- 检查你的仓库根目录下是否直接存在这些PHP文件(比如
index.php、wp-activate.php),如果文件在仓库的子目录中,需要修改任务路径(比如文件在wordpress/子目录,就写成wordpress/*.php)。
3. Shell通配符展开限制
cPanel部署任务默认使用sh而非bash,当*.php没有匹配到文件时,sh不会展开通配符,而是直接把*.php当作文件名传递给cp命令,导致失败:
- 改用
find命令确保匹配到所有PHP文件,替换原有的PHP复制命令:- /bin/find . -maxdepth 1 -type f -name "*.php" -exec /bin/cp -f {} $DEPLOYPATH \; - 或者显式指定用
bash执行命令:- /bin/bash -c '/bin/cp -f *.php $DEPLOYPATH'
优化后的完整.cpanel.yml示例
--- deployment: tasks: - export DEPLOYPATH=/home/mysite/public_html # 批量清理目标目录内容 - /bin/rm -rf $DEPLOYPATH/wp-admin $DEPLOYPATH/wp-content $DEPLOYPATH/wp-includes $DEPLOYPATH/.htaccess - /bin/rm -f $DEPLOYPATH/*.php # 复制目录和单个文件 - /bin/cp -R wp-admin wp-content wp-includes .htaccess $DEPLOYPATH # 复制根目录所有PHP文件 - /bin/find . -maxdepth 1 -type f -name "*.php" -exec /bin/cp -f {} $DEPLOYPATH \;
内容的提问来源于stack exchange,提问作者druque
相关产品推荐
相关产品推荐

