Я пытаюсь вызвать скрипт Python из файла PHP, но он не работает, когда мне нужно загрузить локальную библиотеку. Мой PHP может вызывать мой python, если он не загружает локальные библиотеки, и мой скрипт на python работает, когда запускается вручную.
Вот минимальные (не) рабочие файлы:
index.php
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
</head>
<body>
<?php
$command = escapeshellcmd ("./getter.py") ;
$output = shell_exec ($command) ;
echo "<p>$output</p>" ;
?>
</body>
</html>
getter.py
#!/usr/bin/env python2
import got
if __name__ == "__main__" :
print "Python2 working"
куда got
это знаменитая местная библиотека.
Когда я запускаю вручную ./getter.py
печать происходит, но на моей веб-странице ничего не отображается.
Когда я комментирую import got
веб-страница также отображает печать.
Дополнительная информация :
os
, csv
или другие)$command = escapeshellcmd ("./getter.py") ; $output = shell_exec ($command) ;
простым $output = shell_exec ("./getter.py") ;
#!/usr/bin/env python2
от #!/usr/bin/python2
/var/html/www/test
, как запланировано.Вот дерево папок:
├── getter.py
├── got
│ ├── __init__.py
│ ├── manager
│ │ ├── __init__.py
│ │ ├── TweetCriteria.py
│ │ └── TweetManager.py
│ └── models
│ ├── __init__.py
│ └── Tweet.py
├── index.php
├── __init__.py
└── lib
├── __init__.py
└── toto.py
Спасибо много.
Это было на самом деле вызвано проблемой зависимости. Некоторые обязательные библиотеки установлены только для некоторых пользователей. И Nginx не может получить к нему доступ как root, в то время как обычный пользователь может.
Других решений пока нет …