У меня есть скрипт PHP, который запускает файл .bat на моем компьютере с Windows, используя
$ result = system ("cmd / C nameOfBatchFile.bat");
Устанавливает некоторые переменные среды и используется для вызова Amazon EC2 API из командной строки.
Как мне сделать то же самое с сервера Linux? Я переименовал свой файл .bat в оболочку (.sh) и изменил скрипт, чтобы он использовал «экспорт» при настройке env vars. Я проверил, запустив код из терминала замазки, и он делает то, что должен. Так что я знаю, что команды в сценарии хороши. Как мне запустить это из PHP? Я попытался выполнить ту же команду, что и выше, с новым именем файла, и я не получаю никаких ошибок, файл не найден и т. Д., Но он не работает.
С чего мне начать пытаться решить эту проблему?
---------------------------------- ОБНОВЛЕНИЕ ------------ -------------------
Вот скрипт PHP, который вызывает файл оболочки -
function startAmazonInstance() {
$IPaddress = "1.2.3.4"
$resultBatTemp = system("/cmd /C ec2/ec2_commands.sh");
$resultBat = (string)$resultBatTemp;
$instanceId = substr($resultBat, 9, 10);
$thefile = "ec2/allocate_address_template.txt";
// Open the text file with the text to make the new shell file file
$openedfileTemp = fopen($thefile, "r");
contents = fread($openedfileTemp, filesize($thefile));
$towrite = $contents . "ec2-associate-address -i " . $instanceId . " " . $IPaddress;
$thefileSave = "ec2/allocate_address.sh";
$openedfile = fopen($thefileSave, "w");
fwrite($openedfile, $towrite);
fclose($openedfile);
fclose($openedfileTemp);
system("cmd /C ec2/mediaplug_allocate_address_bytemark.sh");
}
А вот и файл .sh - ec2_commands.sh
#!/bin/bash
export EC2_PRIVATE_KEY=$HOME/.ec2/privateKey.pem
export EC2_CERT=$HOME/.ec2/Certificate.pem
export EC2_HOME=$HOME/.ec2/ec2-api-tools-1.3-51254
export PATH=$PATH:$EC2_HOME/bin
export JAVA_HOME=$HOME/libs/java/jre1.6.0_20
ec2-run-instances -K $HOME/.ec2/privateKey.pem -C $HOME/.ec2/Certificate.pem ami-###### -f $HOME/.ec2/aws.properties
Мне удалось запустить этот файл из командной строки, поэтому я знаю, что команды работают нормально. Когда я работал с окнами, была задержка запуска экземпляра, и я мог выводить результаты на экран. Теперь нет задержки, как будто ничего не происходит.