Php 运行composer remove package name/composer要求bash文件中的包名无效
我面临着一个独特的问题,因为我创建了一个脚本,使用php文件中的api安装包,该api使用shell_exec运行bash文件,该bash文件用于安装包或删除包 但这两个命令不起作用,但在我运行composer-v或它给出输出的任何其他命令时。那有什么许可证吗Php 运行composer remove package name/composer要求bash文件中的包名无效,php,composer-php,Php,Composer Php,我面临着一个独特的问题,因为我创建了一个脚本,使用php文件中的api安装包,该api使用shell_exec运行bash文件,该bash文件用于安装包或删除包 但这两个命令不起作用,但在我运行composer-v或它给出输出的任何其他命令时。那有什么许可证吗 $projectPath = './uninstall.sh '.$name.' '.$version; $page = shell_exec($projectPath); .sh file composer re
$projectPath = './uninstall.sh '.$name.' '.$version;
$page = shell_exec($projectPath);
.sh file
composer remove $1 $2 --- not working
composer -v -- working
命令
composer remove
确实应该只从compose.json
文件中删除需求-它不删除目录
关于安装(您没有演示),我猜在安装过程中有一些错误没有显示出来
重要:shell_exec()
命令没有捕获已执行shell的“标准错误”流(这在中的文档记录得很差)。相反,对于仅输出到stderr的命令,它返回NULL
——如果执行的shell命令返回非零结果代码,它也会返回该值,从而丢弃该shell命令的所有实际输出,因此您经常会错过实际错误
如果shell命令使用shell_exec()
运行,并输出到标准错误流,则该错误流将被传输到连接到正在运行的PHP脚本的终端,或者如果在服务器API下运行,则会被传输到服务器错误流(通常是错误日志)——因此我建议对此进行检查
话虽如此,您可能不应该将
shell_exec()
用于任何非琐碎的事情,尤其是可能失败的事情system()
更好,因为对于以非零退出代码结尾的命令,它不会返回NULL
,但最好的选择显然是使用proc_open()
您的shell脚本文件似乎不完整:您是否输入了hashbang头(!/bin/sh
)?另外,当你说“不工作”时,你的意思是-根本没有输出,或者显示了一些错误消息-如果是,什么错误?@Guss根本没有输出它没有安装任何包或在删除时只从package.json中删除名称,但不删除文件夹