我已经使用 yum 安装了 FastCGI,并编辑了我的 lighttpd.conf,但是在重新启动服务器时我收到了这个错误。
2009-06-24 12:44:43: (log.c.97) server started
2009-06-24 12:44:43: (mod_fastcgi.c.924) bind failed for: unix:/var/run/lighttpd/php-fastcgi.socket-0 No such file or directory
2009-06-24 12:44:43: (mod_fastcgi.c.1365) [ERROR]: spawning fcgi failed.
2009-06-24 12:44:43: (server.c.902) Configuration of plugins failed. Going down.
Run Code Online (Sandbox Code Playgroud)
我的 lighttpd.conf 的相关部分是:
fastcgi.server = ( ".php" =>
( "localhost" =>
(
#"socket" => "/var/run/lighttpd/php-fastcgi.socket",
#"bin-path" => "/usr/bin/php-cgi"
"socket" => "/tmp/php-fastcgi.socket",
"bin-path" => "/usr/bin/php-cgi"
)
)
)
Run Code Online (Sandbox Code Playgroud)
非常感谢。
我在带有 Fcgi 和 Memcached 的 Centos 5 上安装了 Lighttpd。每隔一两周,我会收到一次内部服务器错误 500,我必须手动重新启动 lighttpd 以使其再次工作。
在我的 lighttpd 配置中,我定义了错误日志文件:
server.errorlog = "/home/lxadmin/httpd/lighttpd/error.log"
Run Code Online (Sandbox Code Playgroud)
但是当我打开它时,它只有一个月前的最后几天没有行。
所以我的问题是如何诊断问题所在以及如何为我的配置启用错误日志?
我正在尝试location在 nginx 中设置一个全局变量。除了需要 fastcgi 的 PHP 脚本之外,现在一切正常。他们正在运行 404。
有没有办法可以看到它正在访问的确切路径,以便我可以尝试调试一下并找出我做错了什么?
有没有办法禁用 FastCGI 的读取超时?(fastcgi_read_timeout)
将其设置为零不起作用,只会导致立即超时。
我需要解决超时的原因是我们使用的系统生成报告的方式。由于在 PHP-FPM 中无法进行分叉(pctnl_fork() 被禁用),因此在发送请求后立即完成报告处理。这会导致读取挂起,直到系统完成处理。
我正在尝试在我的 Apache2/PHP 服务器上设置 NewRelic,并让它报告每个虚拟主机的不同应用程序。为此,newrelic.appname必须更改php 值。它在默认情况下定义/etc/php.d/newrelic.ini为按虚拟主机报告,需要在该虚拟主机上专门设置,如下所述:https : //newrelic.com/docs/php/per-directory-settings
在我/etc/php.d/newrelic.ini的设置中:
newrelic.appname="PHP Application;MySite.com;"
Run Code Online (Sandbox Code Playgroud)
在我的虚拟主机中,我有以下配置:
<Directory "/">
AllowOverride All
php_value newrelic.appname "MySite.com"
</Directory>
Run Code Online (Sandbox Code Playgroud)
它是我的.htaccess:
php_value newrelic.appname 'MySite.com'
Run Code Online (Sandbox Code Playgroud)
但是phpinfo()从与.htaccess我得到的文件相同的目录中的文件中查看服务:
Directive Name Local/Active Value Master/Default Value
-----------------------------------------------------------
newrelic.appname PHP Application PHP Application
Run Code Online (Sandbox Code Playgroud)
通过 spawn-fcgi 使用 FastCGI。
任何其他建议将不胜感激。
我已经使用本手册在 Centos + Apache 上安装了 php-fpm - http://www.howtoforge.com/using-php5-fpm-with-apache2-on-centos-6.2-p2但 PHP-FPM 未显示在 phpinfo 中()。我不知道为什么。
PHP-FPM 进程已安装并运行良好:
# service php-fpm status
php-fpm (pid 13349) is running...
# service php-fpm configtest
[29-Apr-2013 14:17:34] NOTICE: configuration file /etc/php-fpm.conf test is successful
Run Code Online (Sandbox Code Playgroud)
我的/etc/php-fpm.conf:
;;;;;;;;;;;;;;;;;;;;;
; FPM Configuration ;
;;;;;;;;;;;;;;;;;;;;;
; All relative paths in this configuration file are relative to PHP's install
; prefix.
; Include one or more files. If glob(3) exists, it is used to include a bunch of
; files …Run Code Online (Sandbox Code Playgroud) 我正在运行Debian 6.0.3( squeeze), nginx-0.7.67, fcgiwrap-1.0-1+squeeze1. 这是测试脚本:
#!/usr/bin/perl
use 5.010;
use warnings;
use strict;
use Data::Dumper;
print "Content-Type: text/html\n\n";
say Dumper {map {$_ => $ENV{$_}} 'SCRIPT_NAME', 'DOCUMENT_ROOT', 'WHATEVER'};
say "$<, $>, $(, $)";
Run Code Online (Sandbox Code Playgroud)
这是nginx配置:
server {
server_name domain.com;
root /home/yuri/6;
access_log /var/log/nginx/domain.com-access.log;
error_log /var/log/nginx/domain.com-error.log;
location /cgi-bin/ {
fastcgi_pass unix:/var/run/fcgiwrap.socket;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param DOCUMENT_ROOT /home/yuri/7/;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param WHATEVER 1;
fastcgi_param WHATEVER 2;
}
location /1.php {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_param PHP_ADMIN_VALUE cgi.fix_pathinfo=1;
fastcgi_param …Run Code Online (Sandbox Code Playgroud) 我有一个 web 服务器运行多个服务器(虚拟主机),使用 nginx 和 fastcgi 传递给 unix-socket。
我想要完成的是使用 beta.example.com 和 live.example.com 进行设置,其中实时站点的 error_reporting 已关闭(但仍记录到文件),而 beta 站点的 error_reporting 已打开。
因此,对于 Apache,我会在以下方面做一些事情:
<VirtualHost *:80>
ServerName beta.example.com
[...]
php_flag display_errors on
php_flag display_startup_errors on
php_value error_reporting -1
[...]
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
在谷歌搜索时,我没有找到任何可以使用 fastcgi 将此类参数传递给 PHP 的地方。有谁知道如何做到这一点?
现在的配置是(简化):
server {
server_name beta.example.com;
[...]
fastcgi_pass unix:/var/run/nginx/php-fastcgi.sock;
fastcgi_index index.php;
}
Run Code Online (Sandbox Code Playgroud) 我安装了 php-fpm 并尝试启动它。得到以下错误:
ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (98)
Run Code Online (Sandbox Code Playgroud)
所以看起来 php-fastcgi 正在使用地址:
[root@singularity ~]# netstat -tulnp | grep ":9000"
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 14595/php-cgi
Run Code Online (Sandbox Code Playgroud)
但我无法停止 php-fastcgi 服务:
[brad@singularity ~]$ sudo /etc/init.d/php-fastcgi stop
Stopping php-cgi: [FAILED]
Run Code Online (Sandbox Code Playgroud)
这是正常的吗?任何想法为什么?或者我可以在哪里查找错误?
我正在尝试为 PHP 应用程序定义一些环境变量,但其中一个变量包含“$”符号。当我使用 测试配置文件时nginx -t,我收到一条错误消息,告诉我变量不存在。好像把“$”后面的文字解释为变量名,当然没有定义。
也许我没有在正确的地方搜索,但我找不到有关如何转义“$”字符的信息。这可能吗?怎么做?
更新:我尝试在 d3ag0s 的评论之后将值括在单引号和双引号之间,但我收到了相同的错误消息。