2014-02-05 7 views
0

У меня возник вопрос о взаимодействии с системой PHP и Linux.Запуск скриптов из PHP

Я хочу, чтобы запустить стим с веб-страниц и адрес этой страницы является

http://site.eu/cp/user/services/21/steaminstall 

И внутренний путь к WebPage, откуда работает команда МОС

/var/www/wwwuser/data/www/site.eu/panel.php?(here goes $_POST[''] data) 

и пара Клиент

/var/www/wwwuser/data/Steam/SteamInstall 

Дело в том, что я знаю, как получить доступ к этому скрипту, также я могу выполнить простой

echo "Script is Runing" 

Но когда мои действия приходит в этот код

#!/bin/bash 
wget -P /var/www/aftersoft/data/Servers/Steam/ http://media.steampowered.com/client/steamcmd_linux.tar.gz && 
tar xvfz /var/www/aftersoft/data/Servers/Steam/steamcmd_linux.tar.gz -C /var/www/aftersoft/data/Servers/Steam/ && 
sh /var/www/aftersoft/data/Servers/Steam/steamcmd.sh +login anonymous +quit && 
rm /var/www/aftersoft/data/Servers/Steam/steamcmd_linux.tar.gz && 
echo "Steam Installation and Update Completed" 

Это не делает ничего, если им запустить его с веб-страницы, но это работает, когда им пытаются запустить его под пользователем SSH (так же, как апаш пользователь с разрешениями на запись в эту папку)

Итак, мой вопрос, что я делаю неправильно?

UPDATE: Мой PHP код для запуска сценария является

if($path[2] === 'steaminstall') 
{ 
    $InstallSteam = exec('/var/www/aftersoft/data/Servers/Steam/SteamInstall', $Output, $Error); 
    if($Error === 0) 
    { 
     $Status = $DB->SteamStatus($_SESSION['username']); 
     if($Status) 
     { 
     header('Location: /cp/'.$_SESSION['username'].'/services/'); 
     } 
     else 
     { 
     $Smarty->assign('InstallStatus', 'Database Error Occured'); 
     $Smarty->display('steaminstall.tpl'); 
     } 
    } 
    if($Error === 2) 
    { 
     $Smarty->assign('InstallStatus', $Output); 
     $Smarty->display('steaminstall.tpl'); 
    } 
} 

И это моя функция запроса к базе данных

public function SteamStatus($Username) 
{ 
    $Status = '1'; 
    $Statement = $this->DBConnection->prepare("UPDATE account set steaminstalled = ? where username = ?"); 
    $Statement->bindParam(1, $Status); 
    $Statement->bindParam(2, $Username); 
    $IStatus = $Statement->execute(); 
    if($IStatus) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 
+0

Можете ли вы предоставить более подробную информацию о вашем php-коде? –

+0

Отредактированный кулак –

ответ

0

Проблема решена, вам просто нужно указать прямой путь к сценарию (как если бы вы этого не сделали, сам сценарий не знает, где скачать и где его извлекать)

Таким образом, f inal bash script (PHP part is fine fine):

#!/bin/bash 
wget -P /var/www/aftersoft/data/Servers/Steam/ http://media.steampowered.com/client/steamcmd_linux.tar.gz && 
tar xvfz /var/www/aftersoft/data/Servers/Steam/steamcmd_linux.tar.gz -C /var/www/aftersoft/data/Servers/Steam/ && 
sh /var/www/aftersoft/data/Servers/Steam/steamcmd.sh +login anonymous +quit && 
rm /var/www/aftersoft/data/Servers/Steam/steamcmd_linux.tar.gz && 
echo "Steam Installation and Update Completed" 
Смежные вопросы