我花了几个小时弄清楚如何安装 Nginx + Ruby 企业版 + PHP5-fpm 和 MYSQL,最后都安装好了,一切似乎都开始正常了。
但由于某种原因,php 文件没有被处理。
.html 文件工作正常,但是当我尝试查看 .php 文件时,它看起来好像不存在,即使它确实存在。有趣的是,当我尝试查看一个不存在的 .html 文件时,我收到了一个很好的 Nginx 404 消息,但是当我查看一个 .php 文件时,它甚至没有给我。
所以我的新手理解,看起来配置有问题,或者 Nginx 和 PHP-fpm 没有相互交谈。
我一直在查看 nginx 配置文件的许多其他示例,我确信这方面没问题。好吧……无论如何,这是conf文件的相关部分:
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/eman/$fastcgi_script_name;
include fastcgi_params;
}Run Code Online (Sandbox Code Playgroud)
和
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;Run Code Online (Sandbox Code Playgroud)
任何帮助是极大的赞赏。
编辑:以下是从测试 php 文件“ http://eman.id.au/test.php ”返回的标头:
HTTP/1.1 404 Not Found =>
Server => nginx/0.8.54
Date => Thu, …Run Code Online (Sandbox Code Playgroud) 我有以下 nginx vhost 配置:
server {
listen 80 default_server;
access_log /path/to/site/dir/logs/access.log;
error_log /path/to/site/dir/logs/error.log;
root /path/to/site/dir/webroot;
index index.php index.html;
try_files $uri /index.php;
location ~ \.php$ {
if (!-f $request_filename) {
return 404;
}
fastcgi_pass localhost:9000;
fastcgi_param SCRIPT_FILENAME /path/to/site/dir/webroot$fastcgi_script_name;
include /path/to/nginx/conf/fastcgi_params;
}
}
Run Code Online (Sandbox Code Playgroud)
我想重定向所有与 index.php 存在的文件不匹配的请求。这适用于目前大多数 URI,例如:
example.com/asd
example.com/asd/123/1.txt
Run Code Online (Sandbox Code Playgroud)
无论是中asd或asd/123/1.txt存在,所以他们重定向到的index.php和工作正常。但是,如果我输入 url example.com/asd.php,它会尝试查找asd.php,当找不到时,它会返回 404 而不是将请求发送到index.php。
有没有得到一个方式asd.php进行也发送到index.php如果asd.php不存在?
Apache2 有一个内置的 fastcgi 替代品,称为 fcgid。这很好,但它缺少 FastCgiExternalServer 指令,我用来连接到 PHP-FPM。我怎样才能对 apache2 中的 fcgid 模块做同样的事情?
我的目标是将 php-fpm 与 apache2 一起使用(在 debian Squeeze 上)。
我决定将我的 OP 从 Litespeed 更改为 Nginx,因为我阅读了很多关于 Nginx 将花费的低资源的信息。
我正在运行一个有 500 个在线用户的 Wordpress 网站
好的,谢谢你们的帮助:) 我编辑了一些东西。
我也有一些问题:
我必须删除吗?下午之前。设置?我删除了它什么配置重要?我有两个快速 cgi,一个在 /etc/php5/fpm 中,名为 php-fpm.conf ,另一个在 /etc/php5/fpm/pool.d 中,名为 www.conf ?
我一夜之间尝试了新配置,当我醒来时,我已经得到了一个空白页面。最佳:
top - 13:55:27 up 1 day, 19:28, 2 users, load average: 0.18, 0.36, 0.19
Tasks: 84 total, 1 running, 83 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.2%us, 0.0%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 3974264k total, 1051360k used, 2922904k free, 162380k buffers
Swap: 3998700k total, 0k used, 3998700k free, 609220k cached
PID …Run Code Online (Sandbox Code Playgroud) 我使用 proxy_fcgi 在 Apache 2.4 上设置了 PHP-FPM,一切正常,但是 4-6 个请求中的每个请求,Apache 都会返回一个空白页面。这发生在我的主站点http://danielhe.com/ 上,但不是子域 vhosts。
这会显示 Apache 的错误日志,[client x] AH01070: Error parsing script headers
最终,有时 Apache segfaults AH00052: child pid 9740 exit signal Segmentation fault (11)
通过多次刷新页面,我可以很容易地重现“错误解析脚本标题”,但是在几次“错误解析脚本标题”之后,段错误会随机发生
更新 我找到了段错误的修复程序,并且 WSOD 显然已自行修复。mod_deflate 有一些问题,但是 Apache 文档中的这个配置修复了它
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# Don't compress images
SetEnvIfNoCase Request_URI \
\.(?:gif|jpeg|jpg|png)$ no-gzip dont-vary
# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
Run Code Online (Sandbox Code Playgroud) 在我的网站上访问某些 PHP 脚本时,我收到了可怕的 500 错误消息。我想知道修复它有什么问题,但 Nginx 没有在我指定的日志文件中记录任何 PHP 错误。这是我的服务器块:
server {
listen 80;
server_name localhost;
access_log /home/whitey/sites/localhost/logs/access.log;
error_log /home/whitey/sites/localhost/logs/error.log error;
root /home/whitey/sites/localhost/htdocs;
index index.html index.php /index.php;
location / {
}
location ~ \.php$ {
fastcgi_pass unix:/tmp/phpfpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
expires max;
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,有些 PHP 脚本可以正常工作,而有些则不行。所以 PHP 不存在全局问题,只是这些脚本中的某些内容导致 Nginx 抛出 500 错误。
我怎样才能找到这个问题的根源?唯一的问题error.log是找不到有关 favicon.ico 的错误。
启动 php5-fpm 似乎可以工作,但立即检查状态显示它没有运行:
[root@server ~]# service php5-fpm start
php5-fpm start/running, process 4516
[root@server ~]# service php5-fpm status
php5-fpm stop/waiting
Run Code Online (Sandbox Code Playgroud)
即使我能够加载 PHP 页面(意味着 PHP-FPM 必须正在运行),状态有时也会报告为stop/waiting.
看来,有有正在运行的进程,但这些只是工作进程?
ps -aux |grep php
www-data 3552 0.0 0.7 338108 14960 ? S 05:43 0:00 php-fpm: pool www
www-data 3553 0.0 1.3 338168 27156 ? S 05:43 0:00 php-fpm: pool www
www-data 3554 0.0 1.1 337948 23020 ? S 05:43 0:00 php-fpm: pool www
www-data 3555 0.0 1.0 334108 20644 ? S …Run Code Online (Sandbox Code Playgroud) 我正在尝试设置 php-fpm 的多个实例,以通过在 centos 6.5 上运行的 apache 2.2 运行多个版本的 php。
在未来的某个时候,这将最终出现在共享托管环境中,因此我需要尽可能严格的安全性。
因此,我试图避免完全禁用 selinux,并尝试将策略设置得尽可能窄。
我对 selinux 比较陌生(我们现有的服务器只是将其禁用)。我已经对这个主题进行了大量阅读,但逻辑仍然无法理解(正如我确定这个问题所显示的那样)。
调用 php-script apache 时会产生此错误:
[Sun May 18 10:46:17 2014] [error] [client 192.168.163.1] (13)Permission denied: FastCGI: failed to connect to server "/fcgi-bin-php5-fpm-i10000_test-1.testtest.org": connect() failed
[Sun May 18 10:46:17 2014] [error] [client 192.168.163.1] FastCGI: incomplete headers (0 bytes) received from server "/fcgi-bin-php5-fpm-i10000_test-1.testtest.org"
Run Code Online (Sandbox Code Playgroud)
包含 php-fpm 套接字的目录如下所示:
drwxr-xr-x. root root system_u:object_r:var_run_t:s0 .
drwxr-xr-x. root root system_u:object_r:var_run_t:s0 ..
srw-------. apache apache unconfined_u:object_r:var_run_t:s0 apache_default.sock
srw-------. apache apache unconfined_u:object_r:var_run_t:s0 i10000_test-1.testtest.org.sock
srw-------. …Run Code Online (Sandbox Code Playgroud) 我最近按照以下说明在我的服务器上安装了 php-fpm(CENTOS 6.5 x86_64 标准,WHM 11.44.1(build 7)):http : //infoliser.com/how-to-configure-apache-2-2-with -php-fpm-using-whm-cpanel-and-easyapache/
服务器 API,正如所揭示的 phpinfo(),现在是 FPM/FastCGI。
但是,当我运行包含 的 php 脚本时exec('id'),我得到:
uid=99(nobody) gid=99(nobody) groups=99(nobody)
我的印象是 php-fpm 将作为 php 脚本所有者的 uid 运行,而不是作为 http 进程的所有者(如本例)。这个页面http://php-fpm.org/说 fpm 具有“能够以不同的 uid/gid/chroot/environment 和不同的 php.ini(替换 safe_mode)启动工人”。
我究竟做错了什么?
我尝试了各种选择,但每隔几天(主要是每天)FPM 就会停止提供页面,并且我收到 502(来自 cherokee 网络服务器)
日志中填充了以下内容:
[15-Sep-2014 10:17:46] WARNING: [pool www] child 10135 exited on signal 11 (SIGSEGV - core dumped) after 15.512406 seconds from start
[15-Sep-2014 10:17:46] NOTICE: [pool www] child 10138 started
[15-Sep-2014 10:18:02] WARNING: [pool www] child 10138 exited on signal 11 (SIGSEGV - core dumped) after 15.657950 seconds from start
[15-Sep-2014 10:18:02] NOTICE: [pool www] child 10166 started
[15-Sep-2014 10:18:20] WARNING: [pool www] child 10212 exited on signal 11 (SIGSEGV - core dumped) after 10.192596 seconds …Run Code Online (Sandbox Code Playgroud)