Импорт библиотеки в Python, вызванный переполнением стека

Я пытаюсь вызвать скрипт 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 веб-страница также отображает печать.

Дополнительная информация :

  • ОС: Ubuntu 18.04.1
  • Веб-сервер: nginix 1.14.0
  • PHP: 7.2
  • Python: 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

Спасибо много.

0

Решение

Это было на самом деле вызвано проблемой зависимости. Некоторые обязательные библиотеки установлены только для некоторых пользователей. И Nginx не может получить к нему доступ как root, в то время как обычный пользователь может.

0

Другие решения

Других решений пока нет …