roxen.lists.roxen.general

Subject Author Date
Re: small patches to make php5-cgi run Matt Hardy <graphicintent[at]netscape[dot]net> 04-08-2006
Greetings

Thanks for these patches.
This indeed got my shiny new php5.1.x cgi working on osx intel as expected.

This redirect pattern worked for the php binary:

/([^\?]*)\.php(/*)([^\?]*)(\?*.*)$   /cgi-bin/php/$1.php$2$3$4


cgi php was compiled with these settings...

/configure --prefix=/usr/local/php --enable-cli --bindir=/usr/bin/ 
--with-mysql=/usr/local/mysql/
make
make install

(dev tools installed on osx)


On debian the apt-get install php4-cgi was adequate for php4 usage
with the shiny roxen install 4.5 + 4.0.x - changed the php binary 
location in cgi module to.. (was cgi-lib)

CGI-bin path: /cgi-bin/
Search path: /usr/lib/cgi-bin/

Redirect module pattern remains:
/(.*)\.php(.*)$ /cgi-bin/php/$1.php$2


Eiichiro ITANI wrote:
> I was tring to run php5-cgi with redirect module, and it failed.
> And watching roxen source, these small patch make php5-cgi run as I
> expected.
> 
> 
> Add redirect entry below in Redirect Module:
> 
>   /([^\?]*)\.php(/*)([^\?]*)(\?*.*)$   /cgi-bin/php5/$1.php$2$3$4
> 
> Apply two patches below for modules/filters/redirect.pike and
> modules/scripting/cgi.pike.
> 
> Then to make correct(?) path_translated for url with pathinfo
> redirected, modified etc/modules/Roxen.pmod like third patch.
> 
> And finally I can access php5 script in roxen. This also work for
> php5 as fastcgi, but roxen fastcgi module output is doubled(Bug #4069)
> 
> Are these in correct way?  Are there more better way?
> 
> 
> $ telnet roxen40 http
> Trying 192.168.64.231...
> Connected to roxen40.localnet.
> Escape character is '^]'.
> GET /test.php HTTP/1.0
> 
> HTTP/1.0 200 OK
> Content-type: text/html
> X-Powered-By: PHP/5.0.5-3
> Server: Roxen/4.0.425-release5
> 
> <html>
> <body>
> Hello world<br/></body>
> </html>
> Connection closed by foreign host.
> 
> --- redirect.pike.~1.40.~       2005-08-16 20:39:55.000000000 +0900
> +++ redirect.pike       2006-01-06 00:40:45.000000000 +0900
> @@ -274,6 +274,7 @@
>      return Roxen.http_low_answer( 302, "")
>        + ([ "extra_heads":([ "Location":to ]) ]);
>    } else {
> +    id->misc->redirected_raw_url = id->raw_url;
>      id->variables = FakedVariables(id->real_variables = ([]));
>      id->raw_url = Roxen.http_encode_string(to);
>      id->not_query = id->scan_for_query( to );
> 
> --- cgi.pike.~2.62.~    2004-07-01 01:59:19.000000000 +0900
> +++ cgi.pike    2006-01-06 01:04:27.000000000 +0900
> @@ -864,8 +864,10 @@
>      environment |= Roxen.build_roxen_env_vars(id);
>      if(id->misc->ssi_env)
>        environment |= id->misc->ssi_env;
> -    if(id->misc->is_redirected)
> +    if(id->misc->is_redirected) {
> +      environment["REDIRECT_URL"] =
id->scan_for_query(id->misc->redirected_raw_url);
>        environment["REDIRECT_STATUS"] = "1";
> +    }
>      if(id->rawauth && query("rawauth"))
>        environment["HTTP_AUTHORIZATION"] = (string)id->rawauth;
>      else
> 
> 
> --- Roxen.pmod.~1.192.~ 2005-10-28 02:40:25.000000000 +0900
> +++ Roxen.pmod  2006-01-06 17:26:07.000000000 +0900
> @@ -947,7 +947,7 @@
>        t2 = id->conf->real_file(path_info, id);
>        if(t2)
>        {
> -       new["PATH_TRANSLATED"] = t2 + t;
> +       new["PATH_TRANSLATED"] = t2 + (id->misc->is_redirect &&
t2[-1]=='/'?"":"/") + t;
>         break;
>        }
>        array(string) tmp = path_info/"/" - ();
> 
> 
> 
>