Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #80539 > unrolled thread

Re: Communicating with a PHP script (and pretending I'm a browser)

Started byLarry Martell <larry.martell@gmail.com>
First post2014-11-11 12:26 -0500
Last post2014-11-11 12:26 -0500
Articles 1 — 1 participant

Back to article view | Back to comp.lang.python

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: Communicating with a PHP script (and pretending I'm a browser) Larry Martell <larry.martell@gmail.com> - 2014-11-11 12:26 -0500

#80539 — Re: Communicating with a PHP script (and pretending I'm a browser)

FromLarry Martell <larry.martell@gmail.com>
Date2014-11-11 12:26 -0500
SubjectRe: Communicating with a PHP script (and pretending I'm a browser)
Message-ID<mailman.15677.1415726816.18130.python-list@python.org>
On Tue, Nov 11, 2014 at 12:18 PM, Marc Aymerich <glicerinu@gmail.com> wrote:
> On Tue, Nov 11, 2014 at 5:43 PM, Larry Martell <larry.martell@gmail.com> wrote:
>> On Tue, Nov 11, 2014 at 11:00 AM, Marc Aymerich <glicerinu@gmail.com> wrote:
>>> On Tue, Nov 11, 2014 at 4:48 PM, Larry Martell <larry.martell@gmail.com> wrote:
>>>>
>>>> I have a PHP app that I want to convert to django. But I want to do it
>>>> stages. All the heavy lifting is in the PHP code, so first, I want to
>>>> just use templates and views to generate the HTML, but still call the
>>>> PHP code. Then later convert the PHP to python.
>>>>
>>>> My issue is that the PHP code expects to get all it's input from the
>>>> REQUEST object and I've consumed that in the view. Is there any way I
>>>> can somehow supply that to the PHP code?
>>>>
>>>> Is there some way python can communicate like curl ... it needs to
>>>> send the request string in the body of a POST request to the URL that
>>>> will route to the PHP script and get the output back.
>>>
>>>
>>> Yes,
>>> I supose you can extract the needed information from the django
>>> Request object and call the php script passing the needed variables as
>>> environment state.
>>>
>>> as a guideline you can do something like
>>>
>>> cmd = (
>>>     'REDIRECT_STATUS=200 '
>>>     'REQUEST_METHOD=GET '
>>>     'SCRIPT_FILENAME=htdocs/index.php '
>>>     'SCRIPT_NAME=/index.php '
>>>     'PATH_INFO=/ '
>>>     'SERVER_NAME=site.tld '
>>>     'SERVER_PROTOCOL=HTTP/1.1 '
>>>     'REQUEST_URI=/nl/page '
>>>     'HTTP_HOST=site.tld '
>>>     '/usr/bin/php-cgi'
>>> )
>>> subprocess.Popen(cmd, stdout=subprocess.PIPE)
>>
>> Thanks very much Marc. In the example, how is the request string passed in?
>
>
> Yeah, a more complete example would be
>
> cmd = (
>     'REDIRECT_STATUS={status} '
>     'REQUEST_METHOD={method} '
>     'SCRIPT_FILENAME={file} '
>     'SCRIPT_NAME=/index.php '
>     'PATH_INFO={path} '
>     'SERVER_NAME=site.tld '
>     'SERVER_PROTOCOL=HTTP/1.1 '
>     'REQUEST_URI={path} '
>     'HTTP_HOST=site.tld '
>     '/usr/bin/php-cgi'
> ).format(
>     status=request.status,
>     method=request.method,
>     path=request.path,
>     file=my_php_path_mapper(request.path),
> )
>
> php = subprocess.Popen(cmd, stdout=subprocess.PIPE)
> response, err = php.communicate()
> if php.return_code != 0:
>     return ResponseError(content=err)
> return Response(content=response)
>
>
> still incomplete and mostly wrong, but good enough to illustrate the
> main pattern :)


So I would put the contents of what I want in the request object in
the file request.path?

[toc] | [standalone]


Back to top | Article view | comp.lang.python


csiph-web