【发布时间】:2018-10-09 11:03:35
【问题描述】:
我正在尝试从 PHP 运行 python 脚本。 python 脚本从文本文件中读取内容并相应地创建 PDF。当我从终端运行 Python 脚本时,它运行良好,并且我得到了预期的所需 PDF。但是当我尝试从 PHP 运行 python 脚本时,它给了我以下错误:
Traceback (most recent call last): File "/home/amogh/server/test.py", line 3, in from fpdf import FPDF ImportError: No module named fpdf
PHP 代码:
<?php
$output = shell_exec("/home/amogh/server/test.py 2>&1");
echo $output;
?>
Python 代码:
#! /usr/bin/python
from fpdf import FPDF
fp = open('downloads/boot.txt', 'r')
pdf = FPDF()
pdf.add_page()
pdf.set_font('Arial', '', 11)
line = fp.read()
pdf.multi_cell(200, 5, line, 0, 1)
pdf.output('test.pdf', 'F')
我已经使用这个命令安装了fpdf:
pip install fpdf
我在lighttpd 服务器上运行我的PHP 文件。谁能告诉我哪里出错了?
【问题讨论】:
-
@Pynchia 是的,我也试过了。仍然给我同样的错误
-
你有没有试过检查直接从终端调用和通过PHP运行时使用的python解释器?下一步是比较两种执行方式的
sys.path的内容 -
@FlyingTeller 两种方式(PHP 脚本和终端)都显示相同的路径
/usr/bin/python。我还比较了sys.path的内容,都是一样的 -
使用
import fpdf: print(fdpf.__file__)运行python 脚本时,它会打印什么?当您使用 php 运行 python 脚本时,路径是否也在sys.path中列出? -
@FlyingTeller 路径似乎相同。我的代码现在可以工作了。我将服务器中的用户从
www-data更改为amogh
标签: php python python-2.7 ubuntu-16.04 lighttpd