FastCGI PHP does not start on server reboot (via rc script).

Maxim Khitrov mkhitrov at gmail.com
Wed Jul 25 15:25:23 UTC 2007


On 7/24/07, Maxim Khitrov <mkhitrov at gmail.com> wrote:
> Hello,
>
> I have this problem that I can't figure out. One of my web servers is
> using a combination of lighttpd and FastCGI php to run a few sites. On
> lighttpd website there is an rc script to help FreeBSD users start
> FastCGI php processes automatically. I've pasted that script below.
>
> I should say that if I run it manually as root, everything works
> beautifully. As you can see, the script creates a unix socket at
> /var/run/fastcgi/php.sock, and lighttpd is then able to execute php
> scripts. The problem is that every time the server is rebooted, the
> script does not start back up. I have to start it manually. I can't
> find any log entries that would indicate a problem, so I'm not even
> sure where to start looking. Below is the script that I'm trying to
> run, file permissions for relevant files, and contents of my rc.conf.
>
> Would greatly appreciate it if someone could at least tell me where to
> start looking for a solution to this problem.
>
> Thanks,
> Maxim Khitrov
>
> /etc/rc.conf:
> fcgiphp_enable="YES"
>
> /var/run/fastcgi:
> -rw-r--r--  1 www  www  -    5B Jul 24 17:06 php.pid
> srwxr-xr-x  1 www  www  -    0B Jul 24 17:06 php.sock=
>
> /usr/local/etc/rc.d:
> -r-xr-xr-x  1 root  wheel  -  1.6K May 23 17:28 fastcgi-php*
>
> /usr/local/etc/rc.d/fastcgi-php:
> #!/bin/sh
> #  FreeBSD rc.d script for fastcgi+php
> #  in rc.conf
> # fcgiphp_enable (bool):        Set it to "YES" to enable fastcgi+php
> #                               Default is "NO".
> # other options see below
> #
>
> . /etc/rc.subr
>
> name="fcgiphp"
> rcvar=`set_rcvar`
>
> load_rc_config $name
>
> : ${fcgiphp_enable="NO"}
> : ${fcgiphp_bin_path="/usr/local/bin/php-cgi"}
> : ${fcgiphp_user="www"}
> : ${fcgiphp_group="www"}
> : ${fcgiphp_children="2"}
> : ${fcgiphp_port="8002"}
> : ${fcgiphp_socket="/var/run/fastcgi/php.sock"}
> : ${fcgiphp_env="SHELL PATH USER"}
> : ${fcgiphp_max_requests="100"}
> : ${fcgiphp_addr="localhost"}
>
>
> pidfile=/var/run/fastcgi/php.pid
> procname="${fcgiphp_bin_path}"
> command_args="/usr/local/bin/spawn-fcgi 2> /dev/null -f
> ${fcgiphp_bin_path} -u ${fcgiphp_user} -g ${fcgiphp_group} -C
> ${fcgiphp_children} -P ${pidfile}"
> start_precmd=start_precmd
> stop_postcmd=stop_postcmd
>
> start_precmd()
> {
>         PHP_FCGI_MAX_REQUESTS="${fcgiphp_max_requests}"
>         FCGI_WEB_SERVER_ADDRS=$fcgiphp_addr
>         export PHP_FCGI_MAX_REQUESTS
>         export FCGI_WEB_SERVER_ADDRS
>         allowed_env="${fcgiphp_env} PHP_FCGI_MAX_REQUESTS FCGI_WEB_SERVER_ADDRS"
> # copy the allowed environment variables
>         E=""
>         for i in $allowed_env; do
>                 eval "x=\$$i"
>                 E="$E $i=$x"
>         done
>         command="env - $E"
>
>         if [ -n "${fcgiphp_socket}" ]; then
>                 command_args="${command_args} -s ${fcgiphp_socket}"
>         elif [ -n "${fcgiphp_port}" ]; then
>                 command_args="${command_args} -p ${fcgiphp_port}"
>         else
>                 echo "socket or port must be specified!"
>                 exit
>         fi
> }
>
> stop_postcmd()
> {
>         rm -f ${pidfile}
> #       eval "ipcs | awk '{ if (\$5 == \"${fcgiphp_user}\") print \"ipcrm -s
> \"\$2}' | /bin/sh"
> }
>
> run_rc_command "$1"
>

Sorry for replying to myself, but I forgot to mention that this server
is actually running inside a jail. I have no idea if that has anything
to do with it. I also have other services being started from
/usr/local/etc/rc.d (lighttpd, mysql, and a few others), but this
fastcgi script is the only one that fails to work.


More information about the freebsd-questions mailing list