如何使用exec函数通过在php中传递参数来调用bash脚本函数?
我创建了一个bash脚本,可以在cpanel中安装magento。但是我有一个关于exec函数的问题如何使用exec函数通过在php中传递参数来调用bash脚本函数?,php,bash,shell,magento-1.7,Php,Bash,Shell,Magento 1.7,我创建了一个bash脚本,可以在cpanel中安装magento。但是我有一个关于exec函数的问题 $function_path = Mage::getBaseDir()."/media/installer/function.sh"; exec("$function_path $db_host $db_name $db_user $db_pass $url $ad_user $ad_pass $ad_email"); 在exec函数中,我传递shell脚本创建并安装Magento数据库所需
$function_path = Mage::getBaseDir()."/media/installer/function.sh";
exec("$function_path $db_host $db_name $db_user $db_pass $url $ad_user $ad_pass $ad_email");
在exec函数中,我传递shell脚本创建并安装Magento数据库所需的所有参数。这是在function.sh文件中编写的bash shell脚本代码
#!/bin/bash
magento_detail $dbhost $dbname $dbuser $dbpass $url $admin_username $admin_password $admin_email
function magento_detail()
{
stty erase '^?'
echo "To install Magento, you will need a blank database ready with a user assigned to it."
echo -n "Do you have all of your database information"
dbinfo = "y"
echo $dbinfo
if [ "$dbinfo" -eq 'y' ]
then
echo "Database Host (usually localhost) : $dbhost "
echo "Database Name : $dbname "
echo "Database User : $dbuser "
echo "Database Password : $dbpass "
echo "Store Url : $url "
echo "Admin Username : $admin_username "
echo "Admin Password : $admin_password "
echo "Admin Email Address : $admin_email "
echo -n "Include Sample Data? (y/n) "
echo sample = "y"
if [ "$sample" -eq "y" ];
then
echo
echo "Now installing Magento with sample data..."
echo
echo "Downloading packages..."
echo
wget http://www.magentocommerce.com/downloads/assets/1.5.1.0/magento-1.5.1.0.tar.gz
wget http://www.magentocommerce.com/downloads/assets/1.2.0/magento-sample-data-1.2.0.tar.gz
echo
echo "Extracting data..."
echo
tar -zxvf magento-1.5.1.0.tar.gz
tar -zxvf magento-sample-data-1.2.0.tar.gz
echo
echo "Moving files..."
echo
mv magento-sample-data-1.2.0/media/* magento/media/
mv magento-sample-data-1.2.0/magento_sample_data_for_1.2.0.sql magento/data.sql
mv magento/index.php magento/.htaccess ./$test1
echo
echo "Setting permissions..."
echo
chmod o+w var var/.htaccess app/etc
chmod -R o+w media
echo
echo "Importing sample products..."
echo
mysql -h $dbhost -u $dbuser -p$dbpass $dbname < data.sql
echo
echo "Initializing PEAR registry..."
echo
chmod 550 mage
./mage mage-setup .
echo
echo "Downloading packages..."
echo
echo
echo "Cleaning up files..."
echo
rm -rf downloader/pearlib/cache/* downloader/pearlib/download/*
rm -rf magento/ magento-sample-data-1.2.0/
rm -rf magento-1.5.1.0.tar.gz magento-sample-data-1.2.0.tar.gz data.sql
rm -rf index.php.sample .htaccess.sample php.ini.sample LICENSE.txt STATUS.txt data.sql
echo
echo "Installing Magento..."
echo
php -f install.php --license_agreement_accepted "yes" --locale "en_US" --timezone "America/Los_Angeles" --default_currency "USD" --db_host "$dbhost" --db_name "$dbname" --db_user "$dbuser" --db_pass "$dbpass" --url "$url" --use_rewrites "yes" --use_secure "no" --secure_base_url "" --use_secure_admin "no" --admin_email "$admin_email" --admin_username "$admin_username" --admin_password "$admin_password"
echo
echo "Finished installing Magento"
echo
exit
else
echo "Now installing Magento without sample data..."
echo
echo "Downloading packages..."
echo
wget http://www.magentocommerce.com/downloads/assets/1.5.1.0/magento-1.5.1.0.tar.gz
echo
echo "Extracting data..."
echo
tar -zxvf magento-1.5.1.0.tar.gz
echo
echo "Moving files..."
echo
mv magento/* magento/.htaccess .
echo
echo "Setting permissions..."
echo
chmod o+w var var/.htaccess app/etc
chmod -R o+w media
echo
echo "Initializing PEAR registry..."
echo
chmod 550 mage
./mage mage-setup .
echo
echo "Downloading packages..."
echo
echo
echo "Cleaning up files..."
echo
rm -rf downloader/pearlib/cache/* downloader/pearlib/download/*
rm -rf magento/ magento-1.5.1.0.tar.gz
rm -rf index.php.sample .htaccess.sample php.ini.sample LICENSE.txt STATUS.txt
echo
echo "Installing Magento..."
echo
php -f install.php --license_agreement_accepted "yes" --locale "en_US" --timezone "America/Los_Angeles" --default_currency "USD" --db_host "$dbhost" --db_name "$dbname" --db_user "$dbuser" --db_pass "$dbpass" --url "$url" --use_rewrites "yes" --use_secure "no" --secure_base_url "" --use_secure_admin "no" --admin_email "$admin_email" --admin_username "$admin_username" --admin_password "$admin_password"
echo
echo "Finished installing Magento else part"
exit
fi
else
echo "Please setup a database first. Don't forget to assign a database user!"
exit
fi
}`
#/bin/bash
magento_详细信息$dbhost$dbname$dbuser$dbpass$url$admin_用户名$admin_密码$admin_电子邮件
函数magento_detail()
{
是否删除“^”
echo“要安装Magento,您需要一个空白数据库,并为其分配一个用户。”
echo-n“您是否拥有所有数据库信息”
dbinfo=“y”
echo$dbinfo
如果[“$dbinfo”-等式'y']
然后
echo“数据库主机(通常为本地主机):$dbhost”
echo“数据库名称:$dbname”
echo“数据库用户:$dbuser”
echo“数据库密码:$dbpass”
echo“存储Url:$Url”
echo“管理员用户名:$Admin\u用户名”
回显“管理员密码:$Admin\u密码”
回显“管理员电子邮件地址:$Admin_电子邮件”
echo-n“包括样本数据”(是/否)
echo sample=“y”
如果[“$sample”-等式“y”];
然后
回声
echo“正在使用示例数据安装Magento…”
回声
echo“下载软件包…”
回声
wgethttp://www.magentocommerce.com/downloads/assets/1.5.1.0/magento-1.5.1.0.tar.gz
wgethttp://www.magentocommerce.com/downloads/assets/1.2.0/magento-sample-data-1.2.0.tar.gz
回声
echo“提取数据…”
回声
tar-zxvf magento-1.5.1.0.tar.gz
tar-zxvf magento-sample-data-1.2.0.tar.gz
回声
回显“移动文件…”
回声
mv magento-sample-data-1.2.0/media/*magento/media/
mv magento-sample-data-1.2.0/magento\u sample\u data\u for\u 1.2.0.sql magento/data.sql
mv magento/index.php magento/.htaccess./$test1
回声
回显“设置权限…”
回声
chmod o+w var/.htaccess应用程序/etc
chmod-R o+w介质
回声
echo“导入样本产品…”
回声
mysql-h$dbhost-u$dbuser-p$dbpass$dbname
我的问题是,它没有执行脚本的所有命令,而是直接进入的最后一步,如果条件并打印“请先设置数据库。”。别忘了分配一个数据库用户!“。有人能告诉我脚本跳过了if部分而直接转到了else部分吗?我想问题出在这一行
“$dbinfo”-等式'y'
不能用-eq检查字符串,它只用于一元语句。替换为
“$dbinfo”==“y”
而且它应该可以工作。我想问题在于这条线
“$dbinfo”-等式'y'
不能用-eq检查字符串,它只用于一元语句。替换为
“$dbinfo”==“y”
它应该可以工作。那么您到底在执行shell的什么?请发布您的具体exec字符串