Как вызвать скрипт php на сервере из python

Я пытаюсь запустить скрипт php, который находится на моем сервере, из проекта python, который находится на моей локальной машине.

Я пытался следовать до сих пор

Сторона Python:

# -*- coding: utf-8 -*-

import subprocess
import json
import sys
import os

def php(script_path):
p = subprocess.Popen(['php', script_path], stdout=subprocess.PIPE)
result = p.communicate()[0]
return result

image_dimensions_json = str(php("http://XXX.XXX.XX.XX/logistic_admin/test1.php"))
dic = json.loads(image_dimensions_json)
print str(dic["0"]) + "|" + str(dic["1"])

сторона php:

test1.php

<?php
echo(json_encode(getimagesize($argv[1])));

?>

Но я сталкиваюсь со следующей ошибкой:

Traceback (most recent call last):
File "D:\folder\test.py", line 20, in <module>
image_dimensions_json = str(php("http://XXX.XXX.XX.XX/logistic_admin/test1.php"))
File "D:\folder\test.py", line 16, in php
p = subprocess.Popen(['php', script_path], stdout=subprocess.PIPE)
File "C:\Python27\Lib\subprocess.py", line 711, in __init__
errread, errwrite)
File "C:\Python27\Lib\subprocess.py", line 948, in _execute_child
startupinfo)
WindowsError: [Error 2] The system cannot find the file specified

1

Решение

Попробуйте использовать urllib модуль.

Пример:

import urllib

def php(script_path):
urlData = urllib.urlopen(script_path)
return urlData.read()
3

Другие решения

или вы можете использовать модуль запросов:

import requests

def req(url):
r = requests.get(url)
return r.text

или модуль urllib2:

import urllib2
def req(url):
f = urllib2.urlopen(url)
return f.read()
0

По вопросам рекламы [email protected]