Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP和Python请求_Php_Python_Python Requests - Fatal编程技术网

PHP和Python请求

PHP和Python请求,php,python,python-requests,Php,Python,Python Requests,我有一个python脚本,它在linux命令行上运行良好。当我试图从PHP页面内部调用它时,脚本会在get请求时停止。老实说,在网页中集成python脚本可能有更好的理由(请随时指导我找到一个资源,帮助我从这里开始)。但是现在,我正在努力让这个脚本正常工作。如果我把print语句放在get之前,它们就会打印。但是,在get之后,打印语句不起作用 python脚本在被调用时不需要任何东西,我只是从脚本中删除了用户和密码 下面是我从命令行运行它时返回的内容: $ python test.py (u'

我有一个python脚本,它在linux命令行上运行良好。当我试图从PHP页面内部调用它时,脚本会在get请求时停止。老实说,在网页中集成python脚本可能有更好的理由(请随时指导我找到一个资源,帮助我从这里开始)。但是现在,我正在努力让这个脚本正常工作。如果我把print语句放在get之前,它们就会打印。但是,在get之后,打印语句不起作用

python脚本在被调用时不需要任何东西,我只是从脚本中删除了用户和密码

下面是我从命令行运行它时返回的内容:

$ python test.py
(u'172.18.251.225', u'25502760-d9a5-11e6-80af-00505684337f', u'MNIT LAN Device')
$
以下是我的python脚本:

#!/usr/bin python

import json
import requests

ERSUser = 'user'
ERSPassword = 'pass'

s = requests.session()
s.auth = (ERSUser, ERSPassword)
s.verify = True
s.headers.update({
            'Accept': 'application/json',
            'Connection': 'keep_alive',
            'Content_type': 'application/json'
            })
url = "https://www.myserver.com:9060/ers/config/networkdevicefilter=ipaddress.EQ.172.18.251.225"

r = s.get(url)

for i in r.json()['SearchResult']['resources']:
       print (i['name'], i['id'], i['description'])
下面是php中我调用test.py脚本的部分:

$command = escapeshellcmd('/usr/bin/python /var/www/cgi-bin/test.py');
$output = shell_exec($command);
echo $output;
以下是我的Apache日志:

error: cannot open Packages index using db5 - Permission denied (13)
error: cannot open Packages database in /var/lib/rpm
Traceback (most recent call last):
  File "/var/www/cgi-bin/test.py", line 19, in <module>
    r = s.get(url)
  File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 476, in get
    return self.request('GET', url, **kwargs)
  File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 464, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 576, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib/python2.7/site-packages/requests/adapters.py", line 415, in send
    raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', error(13, 'Permission denied'))
[dsampson@mnet-ws-dave httpd]$
错误:无法使用db5打开包索引-权限被拒绝(13)
错误:无法在/var/lib/rpm中打开包数据库
回溯(最近一次呼叫最后一次):
文件“/var/www/cgi-bin/test.py”,第19行,在
r=s.get(url)
get中第476行的文件“/usr/lib/python2.7/site packages/requests/sessions.py”
返回self.request('GET',url,**kwargs)
文件“/usr/lib/python2.7/site packages/requests/sessions.py”,请求中的第464行
resp=自我发送(准备,**发送)
文件“/usr/lib/python2.7/site packages/requests/sessions.py”,第576行,在send中
r=适配器.send(请求,**kwargs)
文件“/usr/lib/python2.7/site packages/requests/adapters.py”,第415行,在send中
raise CONNECTIONERR(错误,请求=请求)
requests.exceptions.ConnectionError:(“连接中止”,错误(13,“权限被拒绝”)
[dsampson@mnet-ws-dave-httpd]$

python脚本需要http请求中的内容,而php脚本中没有提供这些内容。您只是从命令行调用脚本。例如,您希望
request.session()
返回什么?在我最初的帖子中添加了对您的问题的回答Federico您的请求似乎很简单。为什么不使用
curl
(我指的是PHP curl)或
file\u get\u contents
?只是把东西扔到墙上:可能是您的shell有一些代理集,这样当您从命令行运行请求时,而不是通过web运行请求时,请求就会通过它?