长虫山小木屋

没有谁会为你踏雪而来 喜欢的风景要躬亲筚路

  博客园  :: 首页  :: 新随笔  :: 联系 ::  :: 管理
问题:自己通过命令行执行python正常,但通过php调用就没有反应。

解决方法:
1、首先检查一下php有没有执行权限,简单粗暴的:

sudo chmod 777 xxx.php

2、Python如果有中文返回,似乎需要额外操作。可以先去掉中文排除掉其他原因,也可以尝试以下操作:
在python文件头部加上

import codecs
sys.stdout = codecs.getwriter('utf-8')(sys.stdout.detach())

或者,php脚本中在调用python命令的地方加上:

// 设置字符集,重要!!!! 非常重要。
$set_charset = 'export LANG=en_US.UTF-8;';
$cmd = "python3  main.py gen  --model-path='checkpoints/tang_199.pth' --pickle-path='tang.npz' --start-words='".$start_words."' --prefix-words='".$prefix_words."' --use-gpu=False  --acrostic='True'";
//echo $cmd;
$poem = exec( $set_charset.$cmd, $output, $res );

3、如果不行,则将php调用语句的最后面加上2>&1,如

echo shell_exec("python3 xxx.py 2>&1");

这样,再去网页执行php时候,就会显示具体的错误原因。

4、如果是普通语法错误,修改即可;但如果提示No module,是因为你当前登录账户(非root)的环境,跟web的环境不一样,所以你通过ssh安装的库,在web下找不到。可以通过加sudo -H来解决,如:

sudo -H pip3 install pyDes
posted on 2023-07-15 17:19  长虫山小木屋  阅读(87)  评论(0编辑  收藏  举报