WSL Ubuntu中修改PHPUnit的PHP7.2路径解决执行错误问题
解决WSL Ubuntu中PHPUnit指向Windows PHP路径的错误
你遇到的问题根源很明确:你当前使用的是Windows版本的PHPUnit脚本,它的执行头(shebang)指向了Windows系统的PHP路径,还带着Windows特有的换行符(就是错误里的^M),导致WSL的Ubuntu环境无法正确解析。下面是一步步的修复方案:
步骤1:确认问题细节
先查看PHPUnit脚本的第一行,验证我们的判断:
head -n 1 /mnt/c/xampp/php/phpunit
你大概率会看到类似这样的输出:
#!/C:\xampp\php.\php.exe^M
这里的^M是Windows的回车符(CR),在Linux环境下会被当作文件名的一部分;同时这个路径是Windows的C盘路径,WSL完全找不到对应的文件。
步骤2:转换脚本换行符为Linux格式
首先要把脚本里的Windows换行符换成Linux兼容的格式,有两种方法可选:
- 如果你已经安装了
dos2unix工具(没装的话可以用sudo apt install dos2unix安装),直接运行:sudo dos2unix /mnt/c/xampp/php/phpunit - 不想额外安装工具的话,用
sed命令替换掉回车符:sudo sed -i 's/\r$//' /mnt/c/xampp/php/phpunit
步骤3:修改PHPUnit的PHP路径指向WSL的PHP7.2
先确认WSL中PHP7.2二进制文件的具体路径,运行:
which php7.2
通常输出会是/usr/bin/php7.2(这是PHP CLI版本的默认路径)。接下来修改脚本的第一行执行头:
sudo sed -i '1c #!/usr/bin/php7.2' /mnt/c/xampp/php/phpunit
如果刚才which命令输出的是其他路径(比如/etc/php/7.2/cli/php),把上面命令里的路径换成对应的即可。
步骤4:确保脚本有执行权限
如果之前脚本没有执行权限,给它加上:
sudo chmod +x /mnt/c/xampp/php/phpunit
测试修复效果
现在运行PHPUnit验证一下:
phpunit --version
应该能正常输出版本信息,不再报路径错误了。
备选方案:直接用WSL PHP运行脚本
如果不想修改原脚本,每次运行时可以直接指定WSL的PHP来执行PHPUnit:
/usr/bin/php7.2 /mnt/c/xampp/php/phpunit
内容的提问来源于stack exchange,提问作者pmiranda
相关产品推荐
相关产品推荐

