PHP CGI 有3种形式:

  1. 最强悍的FPM, 功能最强大, 只要配置php-fpm.conf即可;

    fpm主页: http://php-fpm.org/
  2. 使用 spawn-fcgi, 启动命令: env – PHP_FCGI_CHILDREN=3 PHP_FCGI_MAX_REQUESTS=1000 spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f php-cgi -P /var/run/spawn-fcgi.pid

    使用时, 把www-data替换成自己的用户名和群组名;

    参数含义如下:
      -f <fcgiapp> 指定调用FastCGI的进程的执行程序位置,根据系统上所装的PHP的情况具体设置
      -a <addr> 绑定到地址addr
      -p <port> 绑定到端口port
      -s <path> 绑定到unix socket的路径path
      -C <childs> 指定产生的FastCGI的进程数,默认为5(仅用于PHP)
      -P <path> 指定产生的进程的PID文件路径
      -u和-g FastCGI使用什么身份(-u 用户 -g 用户组)运行,Ubuntu下可以使用www-data,其他的根据情况配置,如nobody、apache等
        然后我们可以将这行代码加入到/etc/rc.local文件底部,这样系统启动的时候也可以同时启动PHP的FastCGI进程。

  3. 直接启动php-cgi, 使用命令: php-cgi -b 127.0.0.1:9000

    不过这时php-cgi是使用当前用户身份, 执行session等相关操作会出错, 如果web用户(如ubuntu下的www-data)是可以登录的, 则使用命令: su www-data -l -c “php-cgi -b 127.0.0.1:9000″

    如果www-data不能登录(bash位/bin/false), 那么直接修改用户权限,

        sudo chown www-data:www-data which php-cgi
        sudo chmod u+s which php-cgi

 

BTW: 近段时间看ZF手册,开头有这么一句: 对于只包含有 PHP 代码的文件,结束标志(”?>”)是不允许存在的,PHP自身不需要(”?>”), 这样做, 可以防止它的末尾的被意外地注入相应。 晕倒~~ 我这会儿才知道有这茬