日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux php 执行python,Linux(Ubuntu)下php使用exec调用python程序返回json数据

發布時間:2024/7/23 linux 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux php 执行python,Linux(Ubuntu)下php使用exec调用python程序返回json数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題起因:解決亂碼問題,及解決PHP調用python外部程序的權限問題

數據中帶有中文,數據來自python讀取微軟數據庫mssql2005 server的數據

操作注意事項主要有兩點:

1.python返回的編碼必須為utf-8

(1)?? ?必須導入codecs模塊,操作代碼如下:

import codecs

# 重要,必須要加上才能轉為utf-8

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

(2) 這里使json格式返回,并非必要.

print(json.dumps(data,ensure_ascii=False))

這里的data是字典格式,方便轉為合理的json格式。

2.php端在使用exec調用python外部程序時,必須使用$set_charset = 'export LANG=en_US.UTF-8;'加在調用的命令前面。如:

(1)//Linux版本

$cmd = "python? test.py? {$djdm}";

$set_charset = 'export LANG=en_US.UTF-8;';

exec($set_charset.$cmd,$res_data,$res_state);

(2)//Windown版本 不能使用$set_charset = 'export LANG=en_US.UTF-8;'加在調用的命令前面.

//Window版本

$cmd = "python ".PLUG_IN_DJBREAKS." {$djdm}";

exec($cmd,$res_data,$res_state)

;

3.必須授權apache用戶給php項目文件夾或在調用exec命令的php文件

授權方法:

(1)先查詢apache的用戶是哪了個

在apache的配置文件apache2.conf查找User 和 Group (User用戶和Group用戶組)是什么。

如這里查到User和Group都是www-data

(2)進入etc目錄并修改文件sudoers,增加用戶和組www-data

在root下面增加www-data修改如下:

root??? ALL=(ALL:ALL) ALL

www-data ALL=(ALL) NOPASSWD:ALL

注意sudoers是只讀文件,使用超級管理員修改權限 sudo chmod 777 sudoers ,再修改 sudo vim sudoers.修改完收回權限。

(3)使用ls -l查看php項目文件夾的用戶和組是否為www-data.如果不是,則使用下面命令授權

chown -R www-data:www-data SPB_SYS

這里的SPB_SYS是項目目錄.

總結

以上是生活随笔為你收集整理的linux php 执行python,Linux(Ubuntu)下php使用exec调用python程序返回json数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。