From: Operating system: ubuntu 9.04 PHP version: 5.2.13 Package: CGI related Bug Type: Bug Bug description:php -b 127.0.0.1 vs php -y php-fpm.conf -x
Description: ------------ As starting php-cgi in 2 ways, the 2 results were different. 1./path/to/php-cgi -b 127.0.0.1:9000 2./path/to/php-cgi -y /path/to/php-fpm.conf -x The first one was correct. The second, which said: 'No input file specified'. As i tracked down the c code, i found out the reason finally, but dunno why still. /php/to/phpsrc/TSRM/tsrm_virtual_cwd.c CWD_API int virutal_file_ex(cwd_state *state,.....) around line 1339 the exact code block: #if !defined(TSRM_WIN32) && !defined(NETWARE) .......... if (use_realpath == CWD_REALPATH) { return 1; } goto no_realpath; It's the above function that keeps the problem presenting.. As i tested, while started as the 1st way, this function return 0, and the tsrm_realpath returns NULL, also tsrm_realpath was called from init_request_info. I think u must be familiarer with the code. And the 2cd way was all right. Here is my nginx(0.6.39) conf block: server { listen 80; server_name pk.local.com; index index.php; root /home/zyk/pk_local; location / { root /home/zyk/pk_local; fastcgi_pass 127.0.0.1:9000; # fastcgi_pass unix:/usr/local/app/php/logs/php.sock; fastcgi_index index.php; fastcgi_intercept_errors on; include fcgi.conf; include fastcgi_params.default; } } } Dir /home/zyk/pk_local is RW for the php daemon userid. Here is my php configure option: configure --enable-fastcgi --enable-fpm --enable-mbstring --prefix=/usr/local/app/php Here is my php-fpm.conf <?xml version="1.0" ?> <configuration> All relative paths in this config are relative to php's install prefix <section name="global_options"> Pid file <value name="pid_file">/usr/local/app/php/logs/php-fpm.pid</value> Error log file <value name="error_log">/usr/local/app/php/logs/php-fpm.log</value> Log level <value name="log_level">notice</value> When this amount of php processes exited with SIGSEGV or SIGBUS ... <value name="emergency_restart_threshold">10</value> ... in a less than this interval of time, a graceful restart will be initiated. Useful to work around accidental curruptions in accelerator's shared memory. <value name="emergency_restart_interval">1m</value> Time limit on waiting child's reaction on signals from master <value name="process_control_timeout">5s</value> Set to 'no' to debug fpm <value name="daemonize">no</value> </section> <workers> <section name="pool"> Name of pool. Used in logs and stats. <value name="name">default</value> Address to accept fastcgi requests on. Valid syntax is 'ip.ad.re.ss:port' or just 'port' or '/path/to/unix/socket' <value name="listen_address">127.0.0.1:9000</value> <value name="listen_options"> Set listen(2) backlog <value name="backlog">-1</value> Set permissions for unix socket, if one used. In Linux read/write permissions must be set in order to allow connections from web server. Many BSD-derrived systems allow connections regardless of permissions. <value name="owner">nobody</value> <value name="group">nobody</value> <value name="mode">0666</value> </value> Additional php.ini defines, specific to this pool of workers. <value name="php_defines"> <!-- <value name="sendmail_path">/usr/sbin/sendmail -t -i</value> --> <!-- <value name="display_errors">0</value> --> <value name="SERVER_SOFTWARE">nginx</value> </value> Unix user of processes <value name="user">nobody</value> Unix group of processes <value name="group">nobody</value> Process manager settings <value name="pm"> Sets style of controling worker process count. Valid values are 'static' and 'apache-like' <value name="style">static</value> Sets the limit on the number of simultaneous requests that will be served. Equivalent to Apache MaxClients directive. Equivalent to PHP_FCGI_CHILDREN environment in original php.fcgi Used with any pm_style. <value name="max_children">5</value> Settings group for 'apache-like' pm style <value name="apache_like"> Sets the number of server processes created on startup. Used only when 'apache-like' pm_style is selected <value name="StartServers">20</value> Sets the desired minimum number of idle server processes. Used only when 'apache-like' pm_style is selected <value name="MinSpareServers">5</value> Sets the desired maximum number of idle server processes. Used only when 'apache-like' pm_style is selected <value name="MaxSpareServers">35</value> </value> </value> The timeout (in seconds) for serving a single request after which the worker process will be terminated Should be used when 'max_execution_time' ini option does not stop script execution for some reason '0s' means 'off' <value name="request_terminate_timeout">0s</value> The timeout (in seconds) for serving of single request after which a php backtrace will be dumped to slow.log file '0s' means 'off' <value name="request_slowlog_timeout">0s</value> The log file for slow requests <value name="slowlog">logs/slow.log</value> Set open file desc rlimit <value name="rlimit_files">1024</value> Set max core size rlimit <value name="rlimit_core">0</value> Chroot to this directory at the start, absolute path <value name="chroot"></value> Chdir to this directory at the start, absolute path <value name="chdir"></value> Redirect workers' stdout and stderr into main error log. If not set, they will be redirected to /dev/null, according to FastCGI specs <value name="catch_workers_output">yes</value> How much requests each process should execute before respawn. Useful to work around memory leaks in 3rd party libraries. For endless request processing please specify 0 Equivalent to PHP_FCGI_MAX_REQUESTS <value name="max_requests">500</value> Comma separated list of ipv4 addresses of FastCGI clients that allowed to connect. Equivalent to FCGI_WEB_SERVER_ADDRS environment in original php.fcgi (5.2.2+) Makes sense only with AF_INET listening socket. <value name="allowed_clients">127.0.0.1</value> Pass environment variables like LD_LIBRARY_PATH All $VARIABLEs are taken from current environment <value name="environment"> <value name="HOSTNAME">$HOSTNAME</value> <value name="PATH">/usr/local/bin:/usr/bin:/bin</value> <value name="TMP">/tmp</value> <value name="TMPDIR">/tmp</value> <value name="TEMP">/tmp</value> <value name="OSTYPE">$OSTYPE</value> <value name="MACHTYPE">$MACHTYPE</value> <value name="MALLOC_CHECK_">2</value> </value> </section> </workers> </configuration> As i dunno if it's a bug yet, maybe it's configuration problem. But there is really no easy way to solve this particular stuff. Any suggestions? Thanks in advance. Test script: --------------- no test script -- Edit bug report at http://bugs.php.net/bug.php?id=52075&edit=1 -- Try a snapshot (PHP 5.2): http://bugs.php.net/fix.php?id=52075&r=trysnapshot52 Try a snapshot (PHP 5.3): http://bugs.php.net/fix.php?id=52075&r=trysnapshot53 Try a snapshot (trunk): http://bugs.php.net/fix.php?id=52075&r=trysnapshottrunk Fixed in SVN: http://bugs.php.net/fix.php?id=52075&r=fixed Fixed in SVN and need be documented: http://bugs.php.net/fix.php?id=52075&r=needdocs Fixed in release: http://bugs.php.net/fix.php?id=52075&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=52075&r=needtrace Need Reproduce Script: http://bugs.php.net/fix.php?id=52075&r=needscript Try newer version: http://bugs.php.net/fix.php?id=52075&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=52075&r=support Expected behavior: http://bugs.php.net/fix.php?id=52075&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=52075&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=52075&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=52075&r=globals PHP 4 support discontinued: http://bugs.php.net/fix.php?id=52075&r=php4 Daylight Savings: http://bugs.php.net/fix.php?id=52075&r=dst IIS Stability: http://bugs.php.net/fix.php?id=52075&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=52075&r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=52075&r=float No Zend Extensions: http://bugs.php.net/fix.php?id=52075&r=nozend MySQL Configuration Error: http://bugs.php.net/fix.php?id=52075&r=mysqlcfg