Darrick Hartman (lists) wrote: > Fred wrote: >> At 16:59 27/01/2008 -0600, Darrick Hartman (lists) wrote: >>> As Lonnie mentioned in an earlier email, php-cli is compiled. php-cgi is >>> currently installed as /usr/bin/php. If you're building from the build >>> environment, copy the file from sapi/cli/php to php-cli (put it on your >>> key disk if you want for now). >>> >>> I confirmed (using your test.php) that it works as you would expect and >>> differently than the php(-cgi) >> Unfortunately, the CLI version compiled by AstLinux is not the real CLI >> version, because it preprends HTML even when called with the "-q switch on >> the shebang line, which is a no-no since Asterisk will call the script >> directly from the dialplan through AGI, and might be confused if it gets >> anything besides authorized responses (0 or 1, I believe): >> >> ======== CentOS 5.1 ============== >> [EMAIL PROTECTED] astlinux-trunk]# /usr/bin/php -v >> PHP 5.1.6 (cli) (built: Sep 20 2007 10:16:10) >> >> [EMAIL PROTECTED] tmp]# cat test.php >> #!/usr/bin/php -q >> <?php >> echo "SET CALLERID \"Derf <123>\"\n"; >> ?> >> >> [EMAIL PROTECTED] tmp]# /tmp/test.php >> SET CALLERID "Derf <123>" >> >> [EMAIL PROTECTED] astlinux-trunk]# cp build_i586/php-5.2.5/sapi/cli/php >> /srv/www/lighttpd/php-cli >> >> ======== AstLinux trunk 1561 ======== >> pbx tmp # wget http://192.168.0.3/php-cli >> pbx tmp # chmod 755 php-cli >> >> pbx tmp # cat /tmp/test.php >> #/tmp/php-cli -q >> <?php >> echo "SET CALLERID \"Derf <123>\"\n"; >> ?> >> >> pbx tmp # ./test.php >> X-Powered-By: PHP/5.2.5 >> Content-type: text/html >> >> pbx tmp # /tmp/php-cli -q test.php >> SET CALLERID "Derf <123>" >> ======== /etc/asterisk/extensions.conf ==== >> [inside] >> exten => 9999,1,Verbose(Name=${CALLERID(name)} number=${CALLERID(num)}) >> exten => 9999,n,AGI(/tmp/test.php) >> exten => 9999,n,Verbose(Name=${CALLERID(name)} number=${CALLERID(num)}) >> ======== Calling in ==== >> pbx*CLI> >> -- Executing [EMAIL PROTECTED]:1] Verbose("SIP/2000-081da3a0", >> "Name=Fred >> number=2000") in new stack >> Name=Fred number=2000 >> -- Executing [EMAIL PROTECTED]:2] AGI("SIP/2000-081da3a0", >> "/tmp/test.php") >> in new stack >> -- Launched AGI Script /tmp/test.php >> -- AGI Script /tmp/test.php completed, returning 0 >> -- Executing [EMAIL PROTECTED]:3] Verbose("SIP/2000-081da3a0", >> "Name=Derf >> number=456") in new stack >> Name=Derf number=456 >> == Auto fallthrough, channel 'SIP/2000-081da3a0' status is 'UNKNOWN' >> pbx*CLI> >> =================================== >> >> In this particular example, it does work, but I've read in the >> documentation that prepending HTML is asking for trouble. Since AGI uses >> STDIN/STDOUT to make Asterisk communicate with external programs, the >> communication is pretty basic. >> >> If you are the maintainer or php5.mk, maybe you can get some help in eg. >> comp.lang.php about how to compile it so AstLinux provides really the same >> CLI version as regular Linux distros. Sorry, I don't have the skills to >> help you :-/ > > Fred, > > I tested for the behavior you describe in a chroot after building php in > the build environment. The cli/php behaves the way you want/expect it > to. Let me build a full image and see if the same behavior is seen. > > It is the "real" php/cli. It's possible that there's a file handler > somewhere that's seeing that the file is a .php and using the cgi > version even though you're explicitly calling the cli version in your > script. What if you change the extension of test.php to test.bla instead?
Fred, I've confirmed this behavior. For php files to work with mini_httpd, files ending in .php are set to execute with /usr/bin/php (which is the cgi version). If you want to manually call the cli version, you need to change the file extension to something other than .php. Then you will not have a problem. You could use .phpcli or leave the extension off entirely. Then it will obey the #!/usr/bin/php-cli argument in the script. Kris and I have discussed this off list and we're not going to change the current behavior of php within the standard distribution. We've now provided a way for you to build your own package and install php-cli (as /usr/bin/php-cli). It's just not worth adding another 2MB in size to the distribution to serve the needs of the minority. So bottom line, rename test.php to test.agi or test.script or test.foo. Then build your own version of Astlinux from svn trunk and include all the options you want. Regards, Darrick -- Darrick Hartman DJH Solutions, LLC http://www.djhsolutions.com ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ Astlinux-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/astlinux-users Donations to support AstLinux are graciously accepted via PayPal to [EMAIL PROTECTED]
