2013-08-09 3 views
0

У меня есть сценарий оболочки (например, mat.sh) в /var/www/, а также есть php-скрипт (т. Е. n1.php) в том же каталоге. Когда я запускаю скрипт оболочки из команды bash, он запускается, но когда я выполняю то же самое с сервера apache2 php, он не выполняется.Невозможно запустить сценарий оболочки из php-кода

mat.sh содержит ..

#!/bin/bash 

cat <<EOF | /var/www/matlab -nodesktop -nosplash -nodisplay /> result.out 
a=add(2,3); 
disp('this is done'); 
disp(a); 
exit 
EOF 

Примечание: /var/www/matlab это каталог MatLab ссылка

n1.php содержит ..

<html> 
<body> 
<?php 
if ($_GET['run']) 
{ 
    # This code will run if ?run=true is set. 
echo "Execution starts here...<br/>\n"; 
echo exec("whoami"); 
echo "<br/>\n"; 
exec ("chmod a+x mat.sh", $output, $return); 
if ($return != 0) 

{ 
     //An error occured, fallback or whatever 

     echo "Execution failed<br/>\n"; 
} 
exec ("sh mat.sh"); 
} 
?> 

<!-- This link will add ?run=true to your URL, myfilename.php?run=true --> 
<a href="?run=true">Click Me!</a> 

Пожалуйста, помогите мне .....

+0

Попробуйте 'shell_exec (« mat.sh »);' – anubhava

+0

Извините, но не работает –

ответ

0

Получаете сообщение об ошибке, выполнив chmod?

Убедитесь, что mat.sh имеет тот же владелец вашего apache2-сервер, например в противном случае этой линии

exec ("chmod a+x mat.sh", $output, $return); 

потерпит неудачу, потому что только владелец может изменить права доступа.

+0

как узнать владельца. И как изменить разрешение владельца. –