从php页面调用时跳过Bash脚本中的Grunt命令(MAMP托管)
背景 因此,我正在创建一个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脚本中,看看是否有效,这个咕噜命令不起作用从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在文
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