在 Python 中导入由 PHP 调用的库
Importing library in Python called by PHP
我试图从 PHP 文件调用 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 : Ubuntu 18.04.1
- 服务器网站:nginix 1.14.0
- PHP : 7.2
- Python : 2.7.15rc1
- 我是网络语言的新手,所以我还不知道调试工具
- 导入非本地库(如
os
、csv
等)没有问题
- 我尝试用简单的
$output = shell_exec ("./getter.py") ;
替换 $command = escapeshellcmd ("./getter.py") ; $output = shell_exec ($command) ;
- 我尝试用
#!/usr/bin/python2
替换 #!/usr/bin/env python2
- 当我要求 PHP 或 Python 给我他们当前的工作目录时,他们都 return 比他们在
/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 身份访问它,而普通用户可以。
我试图从 PHP 文件调用 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 : Ubuntu 18.04.1
- 服务器网站:nginix 1.14.0
- PHP : 7.2
- Python : 2.7.15rc1
- 我是网络语言的新手,所以我还不知道调试工具
- 导入非本地库(如
os
、csv
等)没有问题 - 我尝试用简单的
$output = shell_exec ("./getter.py") ;
替换 - 我尝试用
#!/usr/bin/python2
替换 - 当我要求 PHP 或 Python 给我他们当前的工作目录时,他们都 return 比他们在
/var/html/www/test
中的计划要多。
$command = escapeshellcmd ("./getter.py") ; $output = shell_exec ($command) ;
#!/usr/bin/env python2
这是文件夹树:
├── 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 身份访问它,而普通用户可以。