我有一个从PHP调用的shell脚本(称为test.sh)。在脚本中,我只需:
#!/bin/bash
echo $(whoami)
cordova platform version ios
如果我从终端中调用test.sh,它将正常工作并返回cordova ios版本。
如果我尝试使用PHP调用test.sh,则会得到:
cordova: not found
我已将apache更改为以我的用户名而不是_www来运行,但这没有用。
有人认为我是权限问题吗?
我现在通过删除.sh文件并仅使用PHP脚本(在用户_www下)进一步简化了此操作
exec('echo $(whoami) 2>&1', $output, $return_var);
print_r($output);
echo "<br><br>";
putenv("CORDOVA_HOME=/usr/local/bin/cordova");
exec('cordova -v 2>&1', $output, $return_var);
print_r($output);
注意:whoami工作正常,但仍未找到corvoda。
答案 0 :(得分:0)
使用npm全局安装Cordova。目前,Cordova在您的全球主机中不可用。因此,请首先在全球范围内进行。
在OS X和Linux上:
pip uninstall wrapt
pip install wrapt
在Windows上:
sudo npm install -g cordova
答案 1 :(得分:0)
为解决此问题,我查看了从terminal和PHP返回的路径,它们都使用相同的用户名,但返回了不同的路径详细信息。
添加到PHP后:
putenv("PATH=".getenv('PATH').":/Users/USERNAME/.sdkman/candidates/gradle/current/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands");
putenv("CORDOVA_HOME=/usr/local/bin/cordova");
它开始起作用。我现在在查找证书时遇到了问题,但是在调查之后将是一个不同的问题。