我正在尝试在使用 IIS6 的 Windows Server 2003 机器上安装 PHP。我按照本指南安装它,包括使用 fastCGI 的二进制文件。但是,当我创建 phpinfo(); 时,我认为我做的一切都是正确的。页面我得到以下信息:服务器错误,无法连接到 fastcgi 服务器。
我试过查看我能想到的所有日志。IIS 日志中没有任何有用的内容,PHP 甚至从未在我的事件日志中记录错误或任何内容。
请帮助,谢谢:)
我正在尝试自动配置 Windows 2012 服务器,但我无法让 PHP 工作。
这是我用来向 IIS 添加处理程序映射的命令:
New-WebHandler -Name "PHP-FastCGI" -Path "*.php" -Verb "*" -Modules "FastCgiModule" -ScriptProcessor "c:\php\php-cgi.exe" -ResourceType File
Run Code Online (Sandbox Code Playgroud)
这正确添加了处理程序映射,到目前为止一切顺利。
但是,我仍然需要为可执行文件手动创建一个 FastCGI 应用程序以使其工作。自动执行此操作的 PowerShell 命令是什么?我找不到任何指向正确方向的东西。
每个可以处理多少请求?需要多少内存?
我记得FastCGI是打开初始化的进程,每个进程可以处理一个请求。
多线程呢?
我正在使用 FastCGI 来设置 PHP。我已按照 iis.net 网站上的说明进行操作。我添加了处理程序映射,按照指定编辑了 php.ini 文件。它都不起作用,我只是收到一个 404.0 错误,提示“您正在查找的页面已被删除”,即使错误页面上显示的物理路径存在。在尝试了这种手动方法(解压 php、手动添加句柄映射等)后,我删除了所有内容并尝试了 Web 平台安装程序(呃),但我仍然遇到同样的问题。
更多信息:
详细错误页面说处理程序是我的 StaticFile 处理程序(不是 PHP FastCGI)。它还给出了错误代码 0x80070002
当我查看日志时,它显示“GET /php.ini”给出了 404 错误。为什么 IIS 寻找那个?
根据较旧的问题,例如使用 mod_fcgid 而不是 mod_php和PHP 作为 CGI 或 Apache 模块?(和切向一些其它 问题),我来到了一个了解,运行PHP的CGI或FastCGI的将使我的PHP文件跑出作为所有者,而不是Apache的用户(即运行Apache的用户)。
该phpinfo();函数指出Server API = CGI/FastCGI
但是,当我测试正在运行的用户时,它仍然是apache ie。<?php echo exec('whoami'); ?>返回apache。
我还尝试了Jeremy Bouse在我提到的一个问题中建议的内容,但 PHPwhoami仍然返回apache。
phpinfo 的“服务器 API”等于“CGI/FastCGI”这一事实是否足以让普通用户以所有者身份运行 php 文件?
(它甚至表明 PHP 没有与 mod_php 一起运行吗?)
或者是否还有一些管理任务需要完成或可能配置错误?
可能重复:
访问子文件夹中的 PHP 脚本时,“在 <fastCGI> 应用程序配置中找不到 <handler> scriptProcessor”
我在 IIS 7.5 上的 php 配置有问题。
它实际上是在 Win7 上使用 MS Web PI 进行的全新安装。
我创建了一个简单的php testpage。它在 root 级别http://localhost/test.php和第一个 sub-level 中工作http://localhost/site/test.php,但在http://localhost/site/subfolder/test.php,我收到 HTTP 500 错误:
<handler> scriptProcessor could not be found in <fastCGI> application configuration
一切似乎都按照http://www.iis.net/ConfigReference/system.webServer/fastCgi/application 中的规定进行配置
是否有某种过滤器可以禁用特定文件夹级别的处理/或仅在前 2 个级别启用它?
我应该检查什么?
服务器配置为使用 fastcgi 处理 php 文件:
<IfModule mod_fastcgi.c>
AddHandler application/x-httpd-php .php
Action application/x-httpd-php /fcgi-bin/php-fpm virtual
ScriptAlias /fcgi-bin/php-fpm /fcgi-extsrvs-phpfpm
<Location "/fcgi-bin/php-fpm">
Order Deny,Allow
Deny from All
Allow from env=REDIRECT_STATUS
</Location>
</IfModule>
Run Code Online (Sandbox Code Playgroud)
然后定义一个虚拟主机来使用这个 fastcgi :
<VirtualHost *:80>
ServerName mydomain.org
DocumentRoot /var/www/mydomain.org
<Location />
Order Allow,Deny
Allow from All
AllowOverride None
</Location>
<IfModule mod_fastcgi.c>
# use the socket as defined for this pool
FastCgiExternalServer /fcgi-extsrvs-phpfpm -socket /var/run/php5-fpm/mydomain.org.sock
</IfModule>
# problem here
AliasMatch ^/(.*) /var/www/mydomain.org/index.php
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
一切正常,直到我添加 AliasMatch 行(与 Alias 相同的问题)。目标是使用 index.php 脚本处理每个请求。这会导致 500 错误并显示以下日志: …
我无法让 Munin 动态变焦工作。我很确定问题与 Nginx 配置有关。任何生成缩放图的尝试都会触发 nginx 日志中的以下错误条目:
2015/02/22 13:26:01 [error] 4782#0: *2580 open() "/data/munin/usr/share/munin/cgi/munin-cgi-graph/bellaria/antergos1.bellaria/diskstats_latency/AntergosVG_AntergosRoot-pinpoint=1421756527,1424607727.png" failed (2: No such file or directory), client: 10.10.10.25, server: munin, request: "GET /usr/share/munin/cgi/munin-cgi-graph/bellaria/antergos1.bellaria/diskstats_latency/AntergosVG_AntergosRoot-pinpoint=1421756527,1424607727.png?&lower_limit=&upper_limit=&size_x=800&size_y=400 HTTP/1.1", host: "munin.bellaria", referrer: "http://munin.bellaria/static/dynazoom.html?cgiurl_graph=/usr/share/munin/cgi/munin-cgi-graph&plugin_name=bellaria/antergos1.bellaria/diskstats_latency/AntergosVG_AntergosRoot&size_x=800&size_y=400&start_epoch=1421756527&stop_epoch=1424607727"
Run Code Online (Sandbox Code Playgroud)
具体来说,我怀疑 fastCGI 参数有问题。好心人可以看看我的 Munin 虚拟服务器(见下文)并向我解释有什么问题吗?这让我发疯 - 但我有一种预感,任何专家都会在几分之一秒内确定问题......
# Munin server
server {
listen 80;
server_name munin munin.bellaria;
root /data/munin;
allow all;
access_log logs/munin.access.log;
error_log logs/munin.error.log;
location / {
index index.html index.htm index.php;
}
location ~ \.(php|html|html|cgi)$ {
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param AUTH_USER $remote_user;
fastcgi_param REMOTE_USER …Run Code Online (Sandbox Code Playgroud) 所以,我已经像这样设置了 FastCGI 缓存:
location ~ \.php(/.*)?$ {
fastcgi_cache RWI;
fastcgi_cache_valid 200 60m;
set $nocache 0;
if ($request_method = POST)
{
set $nocache 1;
}
if ($http_cookie ~ (rwi_userid*|rwi_password*)) {
set $nocache 1;
}
if ($request_uri ~* "/(vb/admincp/)") {
set $nocache 1;
}
fastcgi_no_cache $nocache;
fastcgi_cache_bypass $nocache;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass "unix:/var/www/vhosts/system/{domain}/php-fpm.sock";
include /etc/nginx/fastcgi.conf;
}
Run Code Online (Sandbox Code Playgroud)
在server{}块的顶部,我有:
fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=RWI:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
add_header X-Cache $upstream_cache_status;
Run Code Online (Sandbox Code Playgroud)
问题是我的 PHP 脚本 (vBulletin) 总是发送 Pragma & Cache-Control private。当上述规则不适用时,有没有办法忽略这些标头并强制 FastCGI …
显然我不是唯一一个遇到这个问题的人,但是在尝试了针对情侣的每一个建议解决方案之后,我发现我不知道该怎么办。
我正在运行 Ubuntu 16.04、NGinx 和 PHP-FPM。
nginx.conf 是默认的,我只设置了一种信息更丰富的日志格式。
用户权限似乎没问题:NGinx 和 PHP_FPM 在用户 www-data 下运行。文档根所有者是 www-data。FPM-Pool 所有者是 www-data。套接字文件存在并且可写。
我已经尝试将文件夹和文件权限设置为最弱(chmod 777):没有结果。
这是我的 server.conf,正如您从注释行中看到的那样,我尝试了很多技巧 - 但没有效果:
server {
listen 8080;
# listen 8080 default_server;
# listen [::]:8080 default_server;
server_name example.com www.example.com
root /var/www/nginx/;
index index.php;
access_log /var/log/nginx/scripts.log scripts;
gzip on;
gzip_comp_level 3;
gzip_types text/plain text/css application/javascript image/*;
location ~ \.php$ {
if ($uri !~ "^/uploads/") {
fastcgi_pass unix:/run/php/php-fpm-www.sock;
}
include fastcgi.conf;
# include snippets/fastcgi-php.conf;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
} …Run Code Online (Sandbox Code Playgroud)