All you need is this this (except for windows) in a model (php.py?):

from subprocess import Popen, PIPE
import sys, os, threading
def runphp(source):
        PHP_BIN = '/usr/bin/php'
        PHP_ARGS = ['-q']
        PHP_IN_SHELL = True
            php = Popen([PHP_BIN,] + PHP_ARGS, shell=PHP_IN_SHELL,
                  bufsize=1<<12, universal_newlines=True, ## restriction of
templates
                  stdin=PIPE, stdout=PIPE, #stderr=PIPE,
                  close_fds= True)
        php.stdin.write(source)
        php.stdin.close()
        page = php.stdout.read()
        php.stdout.close()
        return page


than in web2py

def index():
    return runphp(response.render('theview.html',a=1,b=2,c=3))

theview.html will first be processed as a web2py template and then as
a php template. Mind that it is slow. For every page it create a new
process.

I did not try and I may have typos but should work.


Massimo


On Dec 30, 12:03 am, John-Kim Murphy <left...@gmail.com> wrote:
> I have been thinking about how to run PHP on top of Web2Py. I'm interested
> in doing this because I want to augment an existing PHP app via Web2Py (For
> example, use the T() internationalization object; use Web2Py's auth access
> control). Also it will be easier to port a PHP application to Web2Py one
> piece at a time if the rest of the unported application can run as PHP.
>
> Something similar was done with 
> Django<http://code.djangoproject.com/ticket/2440>: the
> PHP-based PmWiki <http://www.pmwiki.org/wiki/Main/WikiSandbox?action=edit> and
> even WordPress were integrated with 
> Django<http://showmedo.com/videotutorials/video?name=pythonNapleonePyConTech...>.
> I've been studying the Python source 
> code<http://code.djangoproject.com/attachment/ticket/2440/php.py>,
> and it looks like this could be used to render PHP from a Web2Py view. I'm
> trying to imagine how this would fit into Web2Py; perhaps distributed as a
> plugin:
>
>    1. The PHP code should not be aware it is running on top of Web2Py. Any
>    Web2Py template language is expanded before being sent to the PHP parser. 
> (I
>    just watched the video, and it provides some more details. It looks like 
> the
>    PHP files had to be modified a bit, which I was trying to avoid, if
>    possible.)
>    2. The PHP files (possibly with some {{Web2Py template code}} added) seem
>    like views, but a PHP application will not have any associated Web2Py
>    actions. Should there be a Web2Py controller that manages requests for PHP
>    content, picking the correct PHP file based on the request? Should the PHP
>    files just reside in a new, special php directory?
>    3. How are POST, GET, and SESSION variables passed to/from PHP? It seems
>    PHP sessions are stored on the server; not sure about POST and GET... 
> PmWiki
>    uses URL variables, so I think they are being passed somehow.
>
> Any insights from people more familiar with Web2Py, PHP, and/or Django much
> appreciated!
>
> John

Reply via email to