Я использую 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. Нужна помощь!
Поэтому я нашел решение:
$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-скрипта не было разрешения.
Как это может помочь кому-то еще в будущем.
В PHP вы можете использовать backticks 'для выполнения команд оболочки, поэтому попробуйте следующее:
<?php
'/usr/bin/python /Users/Jupiter/Desktop/NC/www/createHarbourContainter.py'
?>
См. Http://php.net/manual/en/language.operators.execution.php для получения дополнительной информации.
#!/usr/bin/python
, можете ли вы запустить его без/usr/bin/python
?