我最终设法从不同的来源收集了足够的信息来解决这个问题,因为——正如我越来越多地发现与Wordpress开发相关的东西一样——文档是如此的不足。
为了让一个官方命令行实用程序在一个它声称支持的平台上工作,我花费了这么多的研究和黑客技术,这一事实是荒谬的,而我对Wordpress项目和Automatic团队的估计在过去几周中由于这些原因大幅下降。
下面的回答改编自aefxx\'s answer here 和leymannx\'s answer 对这个问题。
据我所知,这里的问题是php.exe
- XAMPP、WAMP和类似的本地服务器中包含的PHP二进制文件是一个Windows二进制文件,它只理解Windows格式的路径。正如aefxx在他的回答中所编码的那样,解决方案是使用一个包装器脚本来检查传递给PHP二进制文件的Unix风格路径,并将其转换为它可以理解的Windows路径。
请注意,由于此解决方案是作为PHP二进制文件本身的包装器实现的,因此对于在Cygwin下运行的任何PHP程序,而不仅仅是WP-CLI,都应该能够解决此问题。
如何使WP-CLI与Cygwin一起工作
Remember to replace any paths below with your own.
下载wp cli后。phar文件并使其可执行
as detailed in the documentation, 将其重命名为时,将其移动到服务器的PHP目录
wp
:
mv /cygdrive/b/Users/User/Desktop/XAMPP/php/wp
在PHP目录中,运行以下操作:
touch php
chmod +x ./php
这将创建一个名为
php
并使其可执行。此文件将用作包装器脚本。在文本编辑器中打开文件并将以下内容粘贴到其中,将PHP可执行文件的路径替换为您自己的路径:
#!/bin/bash
php="/cygdrive/b/Users/User/Desktop/XAMPP/php/php.exe"
for ((n=1; n <= $#; n++)); do
if [ -e "${!n}" ]; then
# Converts Unix style paths to Windows equivalents
path="$(cygpath --mixed ${!n} | xargs)"
case 1 in
$(( n == 1 )) )
set -- "$path" "${@:$(($n+1))}";;
$(( n < $# )) )
set -- "${@:1:$((n-1))}" "$path" ${@:$((n+1)):$#};;
*)
set -- "${@:1:$(($#-1))}" "$path";;
esac
fi
done
"$php" "$@"
运行
cygstart ~/.bash_profile
打开
.bash_profile
文件,并在其末尾添加以下内容,以将XAMPP的PHP目录添加到
PATH
环境变量:
export PATH="/cygdrive/b/Users/User/Desktop/XAMPP/php:$PATH"
最后,运行
source ~/.bash_profile
加载
.bash_profile
文件
最后,运行wp
确认WP-CLI现在正在工作。