Я пытаюсь вызвать скрипт 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
, веб-страница также отображает печать.
Дополнительная информация :
- ОС: Убунту 18.04.1
- Веб-сервер: nginix 1.14.0
- PHP: 7.2
- Питон: 2.7.15rc1
- Я новичок в веб-языке, поэтому я еще не знаю об инструментах отладки.
- Нет проблем при импорте нелокальной библиотеки (например,
os
,csv
или других) - Я попытался заменить
$command = escapeshellcmd ("./getter.py") ; $output = shell_exec ($command) ;
простым$output = shell_exec ("./getter.py") ;
- Я попытался заменить
#!/usr/bin/env python2
на#!/usr/bin/python2
- Когда я прошу PHP или Python предоставить мне их текущий рабочий каталог, они оба возвращают значение
/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
Спасибо много.
getter.py
иgot
по отношению друг к другу и к файлу PHP? Как вы установилиgot
? - person Daniel Roseman   schedule 17.11.2018lib
, содержащуюtoto.py
и__init__..py
, включая lib.toto, которая работает в PHP. Мне придется копнуть глубже. - person Motiss   schedule 17.11.2018tree
). - person Daniel Roseman   schedule 17.11.2018import got
наfrom . import got
и повторите попытку. Можете ли вы также попробовать добавить ошибку журнала? - person mostafazh   schedule 17.11.2018Nginx
выполнялся от имени пользователя root, что не соответствовало всем требованиям для запускаgot
, мне нужно было переустановить требования для всех пользователей. Спасибо за время, которое вы тратите, помогая мне. - person Motiss   schedule 18.11.2018