Вызов скрипта Python из скрипта PHP

1

Я использую PHP-скрипт PHP локально для тестирования с помощью терминала с командой: php -S localhost:8000.

<?php $command = '/usr/bin/python /Users/Jupiter/Desktop/NC/www/createHarbourContainter.py'; exec($command); ?>

Я пытаюсь вызвать этот скрипт python, который существует в том же каталоге:

#!/usr/bin/python


import os
import sys

save_path = '/Users/Jupiter/Desktop/NC/harbours/'
name = sys.argv[1]

def newHarbourContainer():
    os.makedirs(save_path + name)


def main():
    newHarbourContainer()

if __name__ == '__main__':
    main()

В этом сценарии python установлен chmod x+.

Я могу запустить скрипт python из терминала: python createHarbourContainter.py

То, что я не могу сделать, это заставить PHP-функцию exec() вызывать скрипт python. Нужна помощь!

  • 0
    Если у вас есть этот заголовок #!/usr/bin/python , можете ли вы запустить его без /usr/bin/python ?
  • 0
    это твой исполнительный может работать? попробуйте echo exec ('whoami') и скрипт php имеет разрешение make dir. Вы должны получить вывод exec, чтобы найти причину.
Теги:

2 ответа

0

Поэтому я нашел решение:

$output = shell_exec('python createHarbourContainer.py')

И для возврата вывода в браузер:

echo "<pre>$output</pre>";

Я запускал сервер в PHP Development Server. Использование команды bash: php -S localhost:8000 из каталога, где находится index.php. Сервер регистрировал все входные данные и выводил их из интерфейса браузера. Я понял, что при вызове: /usr/bin/python из php PHP Development Server остановит и откроет интерпретатор python.

И установка всего пути к скрипту python, который я хотел выполнить, не работал, потому что у PHP-скрипта не было разрешения.

Как это может помочь кому-то еще в будущем.

0

В PHP вы можете использовать backticks 'для выполнения команд оболочки, поэтому попробуйте следующее:

<?php 
'/usr/bin/python /Users/Jupiter/Desktop/NC/www/createHarbourContainter.py'
?>

См. Http://php.net/manual/en/language.operators.execution.php для получения дополнительной информации.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню