Windows 11+PHP8环境下创建PHAR文件的命令执行异常求助
Windows 11+PHP8环境下创建PHAR文件的命令执行异常求助
看起来你遇到的问题是命令调用格式不对,导致系统直接输出了phar.phar.bat脚本里的内容,而没有真正执行打包操作。我来帮你拆解一下原因和解决办法:
问题根源
你之前的命令把C:\PHP\phar.phar.bat作为php.exe的参数传递了,但phar.phar.bat是一个Windows批处理脚本,php.exe无法直接执行批处理文件——它只会把脚本内容打印出来,这就是你看到"%~dp0php.exe" "%~dp0pharcommand.phar" %*的原因。
正确的命令写法
你有两种可靠的解决方式:
方式1:直接调用批处理脚本
既然phar.phar.bat是官方提供的包装脚本,直接运行它即可,不需要通过php.exe中转:
C:\PHP\phar.phar.bat pack -f %folder%\%pluginname%.phar %folder%\%pluginname%
注意:如果phar.phar.bat所在目录已经加入系统PATH环境变量,直接写phar.phar.bat就行,不用加绝对路径。
方式2:绕过批处理,直接执行pharcommand.phar
其实phar.phar.bat本质上就是调用php.exe执行pharcommand.phar,你可以直接跳过bat脚本,用php.exe直接运行这个phar文件:
php.exe -d phar.readonly=0 C:\PHP\pharcommand.phar pack -f %folder%\%pluginname%.phar %folder%\%pluginname%
这种方式更直接,也能避免批处理脚本可能带来的路径问题。
额外注意事项
- 确保
%folder%和%pluginname%这两个环境变量已经正确定义,否则命令会因为路径不存在而报错。 - 确认
phar.readonly=0的设置生效:如果你的php.ini里已经把phar.readonly设为On,命令行的-d参数会覆盖这个设置,所以没问题,但如果还是报错,可以检查php.ini的配置。
备注:内容来源于stack exchange,提问作者LA_
相关产品推荐
相关产品推荐

