2015-04-27 2 views
3

Я пытаюсь запустить простой питон скрипт (name.py):Запуск питон скрипт в файле Баш с PHP

#!/usr/bin/env python 
name = raw_input('What is your name?\n') 
print 'Hi, %s.' % name 

со следующим Баш скрипт (Helloworld.sh):

#!/bin/bash 

python name.py 

через следующий PHP

<!DOCTYPE html> 
<html> 

<body> 

<?php 
if (isset($_POST['Submit1'])) { 

echo shell_exec('sh /home/administrator/Desktop/Helloworld.sh'); 
} 

    ?> 
<form action="myfilename.php" method="post"> 
<p><Input Type = "Submit" Name ="Submit1" Value = "Save Parameters"> 

</form> 
</p> 

</body> 
</html> 

ошибка в журнале является:

python: невозможно открыть файл 'name.py': [Errno 2] Нет такого файла или каталога

Файл bash отлично работает с терминалом. Что мне делать?

+2

В том же каталоге? – heinst

+0

Какое значение добавляет скрипт Bash? – Biffen

+0

Вы можете поместить полный путь. –

ответ

1

Вы можете изменить скрипт так:

#!/bin/bash 
BASEDIR=`dirname "${0}"` 
cd "$BASEDIR" 
python name.py 

всегда будет работать на каталог, содержащий сценарий. Или, если name.py находится в другом каталоге, затем соответствующим образом измените команду cd.

+0

Оба питона и оболочки сумы находятся на рабочем столе, я изменил мой сценарий оболочки на: #!/bin/Баш BASEDIR = 'Desktop«$ { 0} "' cd "$ BASEDIR" python name.py ................................ но не повезло – Jack

+0

Это BASEDIR = 'dirname" $ ​​{0} "' not 'BASEDIR = Desktop "$ {0}" ',' dirname' - это команда, вам не нужно изменять код, просто скопировать и вставить – Jahid

+0

Это работает, спасибо большое :) – Jack

2

попробуйте добавить строку перед выполнением питон скрипт

cd "$(dirname "$0")" 

в файле баш?

+0

Оба файла python и bash находятся на рабочем столе, поэтому я добавил cd «$ (Desktop« $ 0 »)« Это новая ошибка: /home/administrator/Desktop/Helloworld.sh: 3:/home/administrator/Desktop /Helloworld.sh: Рабочий стол: не найден python: невозможно открыть файл 'name.py': [Errno 2] Нет такого файла или каталога – Jack

+1

нет, просто добавьте 'cd '$ (dirname" $ ​​0 ")" 'don «изменение т' dirname' оставить –

+0

Спасибо, это работает – Jack

Смежные вопросы