php调用命令行的cgi,PHP CGI 和命令行设置

用户评论:

gordon_e_rouse at yahoo dot com dot au (2008-02-28 00:25:06)

Have noticed on debian now, and may be true of other builds, that if you are using php as a command line language, you don't need the -q ie: #!/usr/bin/php -q anymore.

What really took me ages to work out was how to the use php in cgi mode (ie in a cgi-bin directory) as it doesn't send http headers by default. It also fails to populate $_GET and $_POST arrays.

Turns out debian php build comes with /usr/bin/php-cgi

Use this in your shebang if running CGI scripts!

ie:

#!/usr/bin/php-cgi

I understand now - but had to figure this out myself!

Keywords I tried to solve this problem with were:

PHP, CGI, no $_GET array, Premature end of script headers, No http Headers, debian

Hopefully this post might save someone many hours of frustration, if they are googling the above words!

info at ch2o dot info (2005-06-17 07:59:17)

additionnal information to fastcgi...

the compilation of fastcgi library is not nessesary, php include a modified version of this library,

and fastcgi module have this own implementation of the protocole fastcgi...

on the first server (where apache are!) the uid and gid of apache instance of the fastcgi module

must be the same on the php file to execute...

without that they dont work...

the module refuse to send the request to the fastcgi php server...

info at ch2o dot info (2005-06-13 10:59:01)

for using fastcgi external server in place of cgi or mod php with php:

to compile fastcgi librairie:

wget http://www.fastcgi.com/dist/fcgi-2.4.0.tar.gz

tar xzvf fcgi-2.4.0.tar.gz

cd fcgi-2.4.0

./configure

make

gmake install

to compile the fastcgi apache module:

wget http://www.fastcgi.com/dist/mod_fastcgi-2.4.2.tar.gz

tar xvzf mod_fastcgi-2.4.2.tar.gz

cd mod_fastcgi-2.4.2

path/to/apache/bin/apxs -i -A -n fastcgi -o mod_fastcgi.la -c *.c

after you must modify the http.conf to add that:

# load fcgi module

LoadModule fastcgi_module modules/mod_fastcgi.so

# authorization to execute fcgi on tree "/fcgi-bin/"

Options ExecCGI

SetHandler fastcgi-script

# define fastcgi external serveur for virtual path "/fcgi-bin/phpfcgi" to execute on targetmachinehost with targetport

FastCgiExternalServer /fcgi-bin/phpfcgi -host targetmachinehostname:targetport

# mime type definietion for some extention

AddType application/x-httpd-fastphp .php .cphp .php4

#define apache cgi regirection with the virtual action script /fcgi-bin/phpfcgi associated with the defined mime type.

Action application/x-httpd-fastphp /fcgi-bin/phpfcgi

start apache.

compile php with --enable-cgi and --enable-fastcgi=/to/lib/fastcgi

start on target machine php with "php -b ip:port" for ear request from mod_fastcgi.

some aditional thing are in sapi/cgi/README.FastCGI of php src tree.

the document root of the apache machine must be synchronous with the php target machine... with the same tree...

and with that solution you can mixe php5 and php4 with different extention of apache directory limitation to one or another version...

with performance like mod_php!

kptrs at yahoo dot com (2004-06-06 16:37:12)

Dug out from the discussion at the site below is a good tip: if you are working with an existing PHP installation which did not build either the commandline or CGI servers, you can use the lynx non-graphical web browser to get the web server to execute php scripts from the command line (or cron jobs, etc):

lynx -dump http://whatever

>If you wish to use PHP as a scripting language, a good article to read is >http://www.phpbuilder.com/columns/darrell20000319.php3

>note that the article is aimed at *nix not win32, but most of it still applies

phil at philkern dot de (2003-01-03 10:40:11)

Thanks nordkyn, this one was very helpful.

Please note that the kernel has to be compiled with misc binary support, which is activated on most distributions like Debian.

You would have to please these two lines in a script to run it after every reboot, on debian I propose /etc/init.d/bootmisc.sh

You could place this lines at the end but before : exit 0

---

# Install PHP as binary handler

mount -t binfmt_misc none /proc/sys/fs/binfmt_misc

echo ":PHP:E::php::/usr/bin/php4:" > /proc/sys/fs/binfmt_misc/register

---

And please remember that the package management would override the file on the next distribution upgrade :)

cv at corbach dot de (2002-02-20 08:18:18)

Up to and including 4.1.1 you have to set doc_root to an non empty value if you configure PHP for CGI usage with --enable-discard-path.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值