# How to integrate PHP with my homegrown server

- Thread: https://externals.io/message/31897
- Original archive: https://news-web.php.net/php.internals/31897
- Started by Steve Francisco on 2007-08-24T15:08:19+00:00
- Messages: 7
- Reply by email to internals@lists.php.net
- More for agents: search with https://externals.io/search.md?q={query} · JSON API at https://externals.io/api · documentation at https://externals.io/llms.txt

---

## #31897 — Steve Francisco — 2007-08-24T15:08:19+00:00

URL: https://externals.io/message/31897#31897

Hi, as an experiment I have a simple Java based server that listens on 
port 80 and can serve files just fine.  I'd like to extend it to support 
PHP but am looking for guidance on how to do that.  Can someone point me 
to instructions?

My first attempt was to just call the php.exe command line interface to 
launch the php interpreter, capture the html and send it back to the 
caller.  That works well, but I can't seem to figure out how to deal 
with parameters.  For example, if the url would be this on the server:
     http://some.server.com/mypage.php?parm1=Hello&parm2=Goodbye
and in mypage.php I do something like this:
     $echo $_GET["parm1"];
then how do I test this via the PHP command line?

If the command line doesn't have a way to cause $_GET to be populated, 
then what other way of invoking PHP could I use?
-- Steve

---

## #31898 — Robert Cummings — 2007-08-24T15:22:14+00:00

URL: https://externals.io/message/31897#31898 · In reply to: #31897

> Hi, as an experiment I have a simple Java based server that listens on 
> port 80 and can serve files just fine.  I'd like to extend it to support 
> PHP but am looking for guidance on how to do that.  Can someone point me 
> to instructions?
> 
> My first attempt was to just call the php.exe command line interface to 
> launch the php interpreter, capture the html and send it back to the 
> caller.  That works well, but I can't seem to figure out how to deal 
> with parameters.  For example, if the url would be this on the server:
>      http://some.server.com/mypage.php?parm1=Hello&parm2=Goodbye
> and in mypage.php I do something like this:
>      $echo $_GET["parm1"];
> then how do I test this via the PHP command line?
> 
> If the command line doesn't have a way to cause $_GET to be populated, 
> then what other way of invoking PHP could I use?

Sounds like you might need some glue. Have your PHP script run a
function that synchs up the globals with what you want. So your Java
server could populate a file or something with the appropriate data that
it received and your glue function would read it and populate the global
arrays.

Cheers,
Rob.
-- 
...........................................................
SwarmBuy.com - http://www.swarmbuy.com

    Leveraging the buying power of the masses!
...........................................................

---

## #31899 — Mikko Koppanen — 2007-08-24T15:28:59+00:00

URL: https://externals.io/message/31897#31899 · In reply to: #31898

>
> 
> > […]
>
> Sounds like you might need some glue. Have your PHP script run a
> function that synchs up the globals with what you want. So your Java
> server could populate a file or something with the appropriate data that
> it received and your glue function would read it and populate the global
> arrays.
>
> Cheers,
> Rob.
> --
> ...........................................................
> SwarmBuy.com - http://www.swarmbuy.com
>
>     Leveraging the buying power of the masses!
> ...........................................................
>
> --
> 
> 
>
>
You could take a look at implementing PHP support via CGI.


-- 
Mikko Koppanen

---

## #31900 — Daniel Brown — 2007-08-24T15:30:05+00:00

URL: https://externals.io/message/31897#31900 · In reply to: #31897

[snip!]
> If the command line doesn't have a way to cause $_GET to be populated,
> then what other way of invoking PHP could I use?
> -- Steve

    Steve,

    You'd need to transpose the $_GET variables from the request to
$argv variables via the CLI.  I don't know exactly how Java would
handle it, but the PHP equivalent (though rather recursive and
unnecessary, it's just here for demonstration purposes) would be:

<?
    foreach($_GET as $p => $v) {
        $data .= " ".$p."=".$v;
    }
    exec('`which php` '.$filename.$data,$ret); // This would work on Linux....
    // exec('X:\path\to\php.exe '.$filename.$data,$ret);
?>

    Then, in the PHP script, if it wants $_GET variables, you simple
reverse-transpose the variables like so:

<?
// cliscript.php
// Test this from the CLI like so:
// php cliscript.php nothing=nill apple=orange foo=bar testvar=itworks

for($i=1;$i<count($argv);$i++) {
        $variables = split("=",$argv[$i]);
        $_GET[$variables[0]] = $variables[1];
}

echo $_GET['testvar']."\n";
?>


    Of course, remember to sanitize all of your input properly.
Someone else will probably provide a better example than this in some
way, but in the interest of a quick reply, that will get you started.

-- 
Daniel P. Brown
[office] (570-) 587-7080 Ext. 272
[mobile] (570-) 766-8107

Hey, PHP-General list....
50% off for life on web hosting plans $10/mo. or more at
http://www.pilotpig.net/.
Use the coupon code phpgeneralaug07
Register domains for about $0.01 more than what it costs me at
http://domains.pilotpig.net/.

---

## #31901 — Steve Francisco — 2007-08-24T15:57:41+00:00

URL: https://externals.io/message/31897#31901 · In reply to: #31900

Daniel Brown wrote:
> 
> [snip!]
> > […]
> 
>     Steve,
> 
>     You'd need to transpose the $_GET variables from the request to
> $argv variables via the CLI.  I don't know exactly how Java would
> handle it, but the PHP equivalent (though rather recursive and
> unnecessary, it's just here for demonstration purposes) would be:
> 
Thanks Daniel, I can certainly do that in Java without much trouble, 
however I was hoping to avoid needing to do things in each php file to 
convert argv into $_GET.  I want to be able to serve standard PHP 
without modifying each one.

But you made me realize there is a way.  I wrote a small "pre.php" file 
like this:
<?php
	#
	for($i=1;$i<count($argv);$i++) {
	        $variables = split("=",$argv[$i]);
	        $_GET[$variables[0]] = $variables[1];
	}
?>

and in my php.ini, I set this:
auto_prepend_file =e:\php523\pre.php

Now it works fine without having to modify the php code!  All I need to 
do is have the Java code set up the html parms as argv, and I'm done.
-- Steve

---

## #31902 — Daniel Brown — 2007-08-24T16:05:06+00:00

URL: https://externals.io/message/31897#31902 · In reply to: #31901

[snip!]
> Thanks Daniel, I can certainly do that in Java without much trouble,
> however I was hoping to avoid needing to do things in each php file to
> convert argv into $_GET.  I want to be able to serve standard PHP
> without modifying each one.
>
> But you made me realize there is a way.  I wrote a small "pre.php" file
> like this:
> <?php
>         #
>         for($i=1;$i<count($argv);$i++) {
>                 $variables = split("=",$argv[$i]);
>                 $_GET[$variables[0]] = $variables[1];
>         }
> ?>
>
> and in my php.ini, I set this:
> auto_prepend_file =e:\php523\pre.php
>
> Now it works fine without having to modify the php code!  All I need to
> do is have the Java code set up the html parms as argv, and I'm done.
> -- Steve

    That was actually what I was getting at, but because I went to
test it on my own box to be certain it would work, I apparently forgot
to type it into the email.

-- 
Daniel P. Brown
[office] (570-) 587-7080 Ext. 272
[mobile] (570-) 766-8107

Hey, PHP-General list....
50% off for life on web hosting plans $10/mo. or more at
http://www.pilotpig.net/.
Use the coupon code phpgeneralaug07
Register domains for about $0.01 more than what it costs me at
http://domains.pilotpig.net/.

---

## #31904 — BuildSmart — 2007-08-24T17:53:51+00:00

URL: https://externals.io/message/31897#31904 · In reply to: #31898

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1




> 
> > […]
>
> Sounds like you might need some glue. Have your PHP script run a
> function that synchs up the globals with what you want. So your Java
> server could populate a file or something with the appropriate data  
> that
> it received and your glue function would read it and populate the  
> global
> arrays.

Would it not be easier to build php as a cgid?

You can look at the source in lighttpd, it shows an simple method to  
interface with the php cgid which I think you could incorporate into  
your java server (unless your java server is all script based then it  
might take a little more work).

>
> Cheers,
> Rob.

- -- BuildSmart

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2.2 (Darwin)

iD8DBQFGzxsv0hzWbkf0eKgRAvb6AKCqlvNucj+YQtnEyENYbwkAKMCnTQCbBDSF
CGhKu8kbc2OQy8CTsLlN+kY=
=C7+d
-----END PGP SIGNATURE
