第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 Apache 服務(wù)器使用 PHP 執(zhí)行 Python 腳本

使用 Apache 服務(wù)器使用 PHP 執(zhí)行 Python 腳本

拉丁的傳說 2022-07-05 19:33:11
我遇到了一個奇怪的問題。我有一個從 PHP 腳本調(diào)用的 Python 腳本。這一切都在 Ubuntu 18.04 上的 Apache 服務(wù)器上運行。部分 Python 腳本使用 Google Drive API。編輯:見底部經(jīng)過大量測試和復(fù)制后,我得出結(jié)論,只需導(dǎo)入以下 Google Drive Python 庫和依賴項:from __future__ import print_functionfrom googleapiclient import discoveryfrom httplib2 import Httpfrom oauth2client import file, client, toolsfrom googleapiclient.http import MediaIoBaseDownload從 Web 調(diào)用腳本時會弄亂腳本。我的意思是 Python 腳本似乎沒有執(zhí)行,并且我應(yīng)該通過 print 語句獲得的任何 shell 輸出都不會返回到 PHP 腳本。在本地調(diào)用腳本(python myscript.py)時,它工作得很好。奇怪的是,當我從 Python 腳本中刪除這些導(dǎo)入語句時,它在 PHP 和從瀏覽器直接啟動腳本時都可以正常執(zhí)行。在這兩種情況下,我還能夠?qū)?shell 輸出返回到 PHP 腳本。我已經(jīng)為 Python 腳本提供了適當?shù)臋?quán)限,并且我已經(jīng)將 Apache 配置為能夠運行 CGI 腳本。這是我的 Python 腳本的樣子:#!/usr/bin/env python3import cgitbfrom __future__ import print_functionfrom googleapiclient import discoveryfrom httplib2 import Httpfrom oauth2client import file, client, toolsfrom googleapiclient.http import MediaIoBaseDownloadcgitb.enable()print("Hello World")這是我的 PHP 腳本的樣子:<?php    ini_set('display_errors', 1);    ini_set('display_startup_errors', 1);    error_reporting(E_ALL);    $output = shell_exec("python path_to_my_script/myscript.py");    echo $output;?>編輯:我使用通過 pip 安裝的另一個 3rd 方 Python 庫運行了幾個測試,這實際上似乎是通過 PHP 執(zhí)行腳本時導(dǎo)入任何 3rd 方庫的問題。
查看完整描述

2 回答

?
小怪獸愛吃肉

TA貢獻1852條經(jīng)驗 獲得超1個贊

您的問題是用戶權(quán)限問題。您應(yīng)該以擁有您的 python 環(huán)境的用戶身份運行 Apache 服務(wù)器,或者允許運行服務(wù)器的用戶在您的 python 環(huán)境中執(zhí)行權(quán)限。

這個答案應(yīng)該可以幫助您找出服務(wù)器的最佳設(shè)置。

另請閱讀有關(guān)Apache VirtualHosts 配置的信息


查看完整回答
反對 回復(fù) 2022-07-05
?
猛跑小豬

TA貢獻1858條經(jīng)驗 獲得超8個贊

我想通了。希望這將幫助任何有類似問題的人。當您從 Apache 服務(wù)器上提供的 PHP 腳本執(zhí)行 Python 或 shell 腳本時,該腳本將以用戶身份運行,默認情況下為 www-data。

通過運行命令 sudo -u www-data(以 www-data 用戶運行以下命令)python myscript.py,我得到了一個回溯錯誤,提示找不到第 3 方模塊。發(fā)生的情況是,默認情況下 pip(python 包管理器)在用戶級別安裝其包。這對大多數(shù)應(yīng)用程序來說都很好,但在這種情況下會導(dǎo)致問題,因為 www-data 用戶可以理解地找不到已安裝的包,并且腳本崩潰了。從 PHP 腳本的角度來看,這變得特別棘手,因為它不理解這一點并且輸出只是 null。

我知道不推薦使用 sudo 安裝 pip 包,因為它在某些情況下會導(dǎo)致沖突問題;但是,這是解決大多數(shù)軟件包問題的最簡單方法。對于這不起作用的情況,請查看 infinigrove 的答案: 如何安裝 Python 包以供所有用戶全局使用(包括 www-data)

最后,從我所見,為了以 www-data 用戶(sudo -u www-data pip install package)安裝 pip 包,必須授予 www-data sudo 權(quán)限,這絕對不是推薦的解決方案.


查看完整回答
反對 回復(fù) 2022-07-05
  • 2 回答
  • 0 關(guān)注
  • 168 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號