从php页面调用时跳过Bash脚本中的Grunt命令(MAMP托管)

从php页面调用时跳过Bash脚本中的Grunt命令(MAMP托管),php,html,bash,gruntjs,mamp,Php,Html,Bash,Gruntjs,Mamp,背景 因此,我正在创建一个HTML和PHP页面,当用户单击一个按钮时,使用诸如Ionic之类的工具从配置文件构建一个应用程序,并对其进行签名,最终将其自动上传到相关商店 我已经创建了PHP索引页面,它位于MAMP服务器的“htdocs”文件夹中,当您在浏览器中导航到“localhost:8888”时,该页面运行良好,并且当“提交”时单击按钮时,会发出一个快速的AJAX调用,运行另一个PHP文件,该文件开始执行bash脚本,该脚本执行所有工作,包括排列文件和文件夹、解压缩,并最终使用grunt在文

背景

因此,我正在创建一个HTML和PHP页面,当用户单击一个按钮时,使用诸如Ionic之类的工具从配置文件构建一个应用程序,并对其进行签名,最终将其自动上传到相关商店

我已经创建了PHP索引页面,它位于MAMP服务器的“htdocs”文件夹中,当您在浏览器中导航到“localhost:8888”时,该页面运行良好,并且当“提交”时单击按钮时,会发出一个快速的AJAX调用,运行另一个PHP文件,该文件开始执行bash脚本,该脚本执行所有工作,包括排列文件和文件夹、解压缩,并最终使用grunt在文件上运行各种ionic进程

“咕噜”命令会出现问题。我让脚本完美地执行每个命令,我甚至有一个日志文件,以便在使用页面按钮调用脚本时检查其进度。它一直运行到发出咕噜命令,然后它似乎只是跳过了它。当我在终端中使用所有相同的参数运行脚本时,它工作得很好,甚至grunt调用也被很好地命中和执行,但只要我尝试使用创建的前端页面使用完全相同的脚本,grunt命令就会被忽略,其他所有命令似乎都被成功命中

当我使用终端运行脚本并传入完全相同的输入参数时,只是为了重新迭代,它可以工作,但是当我使用页面并单击按钮时,其他一切都可以工作,grunt命令被跳过、丢失或失败

问题

所以我的问题是,为什么会发生这种情况,我该如何解决?这和妈妈或咕噜声有关吗

更多信息:

PHP页面存储在MAMP的htdocs文件夹中,以便在浏览器中输入localhost时加载该索引页面

/应用程序/MAMP/htdocs

调用脚本的PHP文件也存储在这里,并在使用快速AJAX函数调用时将成功参数返回到索引页面

但是,脚本位于本地计算机上,就在我为测试系统而创建的一个简单测试文件夹中。也许这就是问题所在?然而,正如所述,脚本可以工作,移动文件夹,复制文件夹,解压文件夹,但是一旦调用grunt来运行一些离子进程,它就会跳过它

感谢您花时间阅读本文,如果您有任何问题或需要代码,请让我知道,但是我相信这不是基于代码的问题,而是一个理论问题。但如果有必要,我非常愿意发布代码

添加了代码片段 我添加了似乎是导致问题的代码,这是来自调用的脚本。这个片段存在于一个IF语句中,并成功地实现了“exec grunt”调用,我尝试了许多不同的方法,包括将cd放入目录,然后只命令“grunt”,甚至将grunt命令放入自己的php脚本中,看看是否有效,这个咕噜命令不起作用

echo "====================================="
echo "|                                   |"
echo "| Sources avaliable, ok to proceed  |"
echo "|                                   |"
echo "====================================="
timestamp=$( date +%T )
echo "$timestamp ==== Sources file is avaliable <br />" >> "$LOG_FILE"

echo "====================================="
echo "|                                   |"
echo "|   Beginning the UN-zip and Move!  |"
echo "|                                   |"
echo "====================================="
timestamp=$( date +%T )
echo "$timestamp ==== Un-zipping now starting <br />" >> "$LOG_FILE"

if [ -d "zz_app-framework_adrian_plus" ]; then
    echo "Framework already exists so skip the un-zip phase"
else
    echo "Framework not present so, unzipping into current dir"
    unzip ../../Master/zz_app-framework_adrian_plus.zip -d .
fi
#REVISED --- #unzip ../../Master/zz_app-framework_adrian_plus.zip -d .
timestamp=$( date +%T )
echo "$timestamp ==== Un-zipping done! <br />" >> "$LOG_FILE"

echo "====================================="
echo "|                                   |"
echo "|          Unzip complete           |"
echo "|                                   |"
echo "====================================="

#REVISED --- #cd zz_app-framework_adrian_plus

rm -r zz_app-framework_adrian_plus/sources
unzip -o sources.zip -d zz_app-framework_adrian_plus/

rm -r zz_app-framework_adrian_plus/sources/appsmart-cfg.json

timestamp=$( date +%T )
echo "$timestamp ==== Config now swithcing <br />" >> "$LOG_FILE"

pwd

locate=$(pwd)

php ../../Master/getConfig.php "$apptoken" "$locate"

timestamp=$( date +%T )
echo "$timestamp ==== Config file replaced! <br />" >> "$LOG_FILE"

echo "====================================="
echo "|                                   |"
echo "|  Sources and Config updated...    |"
echo "|                                   |"
echo "====================================="

echo "====================================="
echo "|                                   |"
echo "|     Beginning Ionic Build         |"
echo "|                                   |"
echo "====================================="

timestamp=$( date +%T )
echo "$timestamp ==== Beginning Ionic processes <br />" >> "$LOG_FILE"

if [ -d "zz_app-framework_adrian_plus/project/platforms" ]; then
    echo "Platforms already exist, deleting first before continuing!"  >> "$LOG_FILE"
    rm -r zz_app-framework_adrian_plus/project/platforms
else
    echo "No Platforms exists, please check folders, however script will continue" >> "$LOG_FILE"
fi

timestamp=$( date +%T )
echo "$timestamp ==== About to call grunt <br />" >> "$LOG_FILE"

exec grunt --base zz_app-framework_adrian_plus/project/ --gruntfile zz_app-framework_adrian_plus/project/Gruntfile.js

timestamp=$( date +%T )
echo "$timestamp ==== Grunt completed! <br />" >> "$LOG_FILE"

echo "====================================="
echo "|                                   |"
echo "|    Build Complete, Now Signing    |"
echo "|                                   |"
echo "====================================="

timestamp=$( date +%T )
echo "$timestamp ==== Beginning Signing process <br />" >> "$LOG_FILE"

locationOfApk=$(pwd)
fulllocation="$locationOfApk/zz_app-framework_adrian_plus"
keylocation="../../Master/"

../../Master/./signit.sh "$apptoken" "$ident" "$slug" "$fulllocation" "$keylocation"

timestamp=$( date +%T )
echo "$timestamp ==== Signing Done! <br />" >> "$LOG_FILE"


echo "====================================="
echo "|                                   |"
echo "|         Signing Complete!         |"
echo "|                                   |"
echo "====================================="

echo "====================================="
echo "|                                   |"
echo "|       Uploading to store...       |"
echo "|                                   |"
echo "====================================="

timestamp=$( date +%T )
echo "$timestamp ==== Now uploading to store... <br />" >> "$LOG_FILE"
echo”=========================================================================================================
回声“| |”
echo“|源可用,可以继续|”
回声“| |”
回声“==============================================================================================================================================================================================================================================================================
时间戳=$(日期+%T)
echo“$timestamp===源文件可用
“>>”$LOG\u文件” 回声“============================================================================================================================================================================================================================================================================== 回声“| |” echo“|开始解开拉链并移动!|” 回声“| |” 回声“============================================================================================================================================================================================================================================================================== 时间戳=$(日期+%T) echo“$timestamp===现在开始解压缩”
“>>“$LOG\u文件” 如果[-d“zz_应用程序框架_adrian_plus”];然后 echo“框架已存在,请跳过解压缩阶段” 其他的 echo“框架不存在,因此,解压缩到当前目录” 解压.././Master/zz_app-framework_adrian_plus.zip-d。 fi #修订版---#解压.././Master/zz_app-framework_adrian_plus.zip-d。 时间戳=$(日期+%T) echo“$timestamp===解压完成!
“>>”$LOG\u文件” 回声“============================================================================================================================================================================================================================================================================== 回声“| |” echo“|解压缩完成|” 回声“| |” 回声“============================================================================================================================================================================================================================================================================== #修订版---#cd zz#app-framework#U adrian#U plus rm-r zz_app-framework_adrian_plus/来源 解压-o sources.zip-d zz_app-framework_adrian_plus/ rm-r zz_app-framework_adrian_plus/sources/appsmart-cfg.json 时间戳=$(日期+%T) echo“$timestamp===Config now swithcing
”>>“$LOG\u文件” pwd 定位=$(pwd) php.././Master/getConfig.php“$apptoken”“$locate” 时间戳=$(日期+%T) echo“$timestamp===配置文件已替换!
“>>”$LOG\u文件” 回声“============================================================================================================================================================================================================================================================================== 回声“| |” echo“|源和配置已更新…” 回声“| |” 回声“============================================================================================================================================================================================================================================================================== 回声“============================================================================================================================================================================================================================================================================== 回声“| |” echo“|开始爱奥尼亚建造|” 回声“| |” 回声“============================================================================================================================================================================================================================================================================== 时间戳=$(日期+%T) echo“$timestamp====开始离子过程
”>>“$LOG\u文件” 如果[-d“zz_应用程序框架_adrian_plus/项目/平台”];然后 echo“平台已存在,在继续之前先删除!”>>“$LOG\u文件” rm-r zz_app-framework_adrian_plus/项目/平台 其他的 echo“不存在平台,请检查文件夹,但脚本将继续”>>“$LOG\u文件” fi 时间戳=$(日期+%T) echo“$timestamp===即将调用grunt
”>>“$LOG\u文件” 执行grunt--base zz_app-framework_adrian_plus/project/--gruntfile zz_app-framework_adrian_plus/project/grunti