这可能听起来有点奇怪但我需要这样才会发生这样的原因。
我需要python才能将数据发布到Linux服务器上的本地PHP文件中,然后从PHP获得响应。
我试过这个:
p = subprocess.Popen("curl --data 'param1=value1¶m2=value2' /home/hbmukwm/temp/receive.php", shell=True, stdout=subprocess.PIPE)
reply = p.stdout.read()
但是当我这样做时,因为它是一个本地文件,我得到这个卷曲错误:curl:(3)格式错误
我也是这样尝试过的(在stackoverflow回答中找到)
mydata=[('one','1'),('two','2')]
mydata=urllib.urlencode(mydata)
path='file:/home/hbmukwm/temp/receive.php'
req=urllib2.Request(path, mydata)
req.add_header("Content-type", "application/x-www-form-urlencoded")
reply=urllib2.urlopen(req).read()
但是在这种情况下,我将php响应视为纯文本,就像我只是试图读取PHP文件一样,我认为这种情况正在发生,因为PHP文件是本地的,如下所示:
<?php echo "test"; ?>
而不仅仅是
test
希望到目前为止这是有意义的。我需要做的就是将数据发布到本地PHP文件,然后将PHP响应返回到python ...这可能......
任何回复都非常感谢,对不起我的无知!
答案 0 :(得分:2)
感谢大家的回复,我至少学到了一些东西!我想将它作为本地文件的原因是因为我不希望PHP文件可以公开访问,尽管需要从运行应用程序的任何位置向它们发送数据。所以我的想法是创建一个小的python应用程序,它运行在linux服务器上的一个端口上,它接受命令并将它们传递给服务器本地的PHP文件。
无论如何,我的工作方式是使用命令行(就像我的第一个例子),除了使用:
p = subprocess.Popen("php /path/to/file 'data=this'", shell=True, stdout=subprocess.PIPE)
然后在PHP文件中抓住像这样的参数
$data = $argv[1];
这不是像我最初要求的那样将数据发布到PHP文件,但我想我误解了我需要做什么。谢谢你们所有的帮助!我无法确定你的答案中哪一个是明确的答案,因为你说的都是正确的,但我现在发布的答案是我如何克服这个问题。
再次感谢大家,Stack Overflow是最好的:)
答案 1 :(得分:0)
您需要一个Web服务器来运行PHP代码。您不能仅将其称为文件系统位置。我建议您在计算机上安装 [WML] AMP Web服务器软件包,它将安装 Apache , PHP , MySQL 并且很容易为初学者设置和配置。以下是AMP系列的链接。使用那个
答案 2 :(得分:0)
您需要一个Web服务器来实际解析和解释PHP脚本。但是,如果您想要通过命令行执行此操作,则此页面应为您提供一些详细信息:PHP Command line usage。您还没有提到您使用的是哪个版本的PHP,但是自PHP 4.3.0以来,这似乎得到了支持
答案 3 :(得分:0)
我想这是一个品味问题,但我正在使用www.apachefriends.org上的“xammp” 您可以使用php5,sql等轻松设置网络服务器。 Wit BitNami你也可以轻松安装joomla和其他东西。