2016-11-04 4 views
0

Я написал PHP-код для выполнения сценария оболочки. Но когда я запускаю php-скрипт в браузере, сценарий оболочки загружается, а не выполняется. Может кто-нибудь помочь в решении проблемы.Сценарий оболочки загружается вместо выполнения

Примечание:

путь исходного файла PHP: MyUser $ /tmp/sample/index.php

index.php имеет код, написанный для выполнения сценария оболочки test.sh

индекс .php

<form action="test.sh" method="get"> 
    <input type="hidden" name="act" value="run"> 
    <input type="submit" value="run"> 
    </form> 

test.sh

#!/bin/bash 

    USERNAME=sfuser 
    HOSTS="pcsched01.syd.sf.priv" 
    SCRIPT="touch t.txt" 
    for HOSTNAME in ${HOSTS} ; do 
      ssh -l ${USERNAME} ${HOSTNAME} "${SCRIPT}" 
    done 

ответ

0

Try like this 
 

 
<?php 
 
    if (isset($_POST['button'])) 
 
    { 
 
      exec("/path/to/name.sh"); 
 
    } 
 
?> 
 
<html> 
 
<body> 
 
    <form method="post"> 
 
    <p> 
 
     <button name="button">Run Perl</button> 
 
    </p> 
 
    </form> 
 
</body>

+0

Этот код выполняет, но не вызывает сценарий оболочки. – saranyaa

+0

Вы помещаете правильный путь. – saravanan

+0

yes saravanan. Я дал правильный путь. может быть какая-то проблема с браузером, я думаю, – saranyaa

0

У вас есть веб-сервер (Apache возможно?) Работает, которая обслуживает контента по протоколу HTTP. После отправки формы вы отправляете запрос на веб-сервер, чтобы служить вам с тестом test.sh через HTTP-запрос GET. Веб-сервер предоставляет вам контент. Все работает как ожидалось!

Вам нужно создать скрипт, который фактически выполняет сценарий SH, используя, например: http://php.net/manual/en/function.exec.php

<?php 
exec('test.sh'); 
?> 

SucceS!

+0

Функция exec() не работает. Будет ли проблема с портом? Но не было получено никакого сообщения об ошибке. Отображение эхо-сообщения «успешно подключено», но не вызывает сценарий оболочки. может помочь вам. – saranyaa