问题标签 [fastcgi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2454 浏览

python - Django 和 fcgi - 日志记录问题

我有一个在 Django 中运行的站点。前端是 lighttpd 并使用 fcgi 来托管 django。

我按如下方式启动我的 fcgi 进程:

对于日志记录,我有一个 RotatingFileHandler 定义如下:

日志记录正在工作。但是,当文件甚至没有达到 10Kb,更不用说 10Mb 时,它们看起来就像在旋转。我的猜测是每个 fcgi 实例只处理 10 个请求,然后重新生成。fcgi 的每次重生都会创建一个新文件。我确认 fcgi 每隔一段时间就会在新的进程 ID 下启动(很难准确说出时间,但不到一分钟)。

有没有办法解决这个问题?我希望所有 fcgi 实例都记录到一个文件,直到达到大小限制,此时将发生日志文件轮换。

0 投票
4 回答
4668 浏览

c++ - FastCGI 如何在 Web 服务器上工作(例如 Apache 2.2+)?

我查看了 FastCGI (fcgi-2.4.0) 的来源,实际上没有分叉的迹象。如果我是正确的,Web 服务器会为 FastCGI 模块生成一个进程(在其中编译或作为 SO/DLL 加载)并处理对主套接字(通常是 TCP:80 端口)的控制。

在 *nix 上,FastCGI 模块在整个文件描述符(实际上是监听套接字)上使用文件写锁(libfcgi/os_unix.c:989)“锁定”该套接字;这样,当新连接获得时,只有 FastCGI 模块能够处理这些。传入的套接字锁定在移交给 HTTP 请求处理之前被释放。

正如所见,FastCGI 模块不是多进程/线程(没有内部使用 fork/pthread_create)我假设多个同时连接的并发处理是通过从 n 个 FastCGI 模块进程的 Web 服务器(通过 OS_SpawnChild)生成的。例如,如果我们生成 3 个 FastCGI 进程(Apache 调用 3 x OS_SpawnChild),这是否意味着我们最多只能同时处理 3 个请求?

A) 我对 FastCGI 工作方式的看法是否正确?

B) 如果操作系统产生新进程/创建与本地数据库的连接的成本可以忽略不计,那么 FastCGI 与老式可执行方法相比有什么优势?

谢谢,艾玛!:-)

0 投票
2 回答
2935 浏览

java - 我可以从文件描述符编号中获取 Java 套接字吗?

当一个程序通过 FastCGI 启动时,它会在一个已经打开的套接字与 Web 服务器对话的情况下执行。套接字的文件描述符编号被传递给程序,但是如何将其转换为 Java 中有用的东西,例如 Socket 实例?

我的托管服务将 mod_fastcgi 用于 Apache httpd。他们不允许我配置一个外部服务器,我提供一个主机:端口以通过 FastCgiExternalServer 将请求转发到。

0 投票
1 回答
1288 浏览

php - 如何仅为某些 URL 设置 nginx + php-fpm + wordpress?

我试图让 nginx + php-fpm +wordpress 从我的网站上提供一些页面,同时充当其他页面的代理。

IE:

host/foo -> 代理到另一个 www 服务器

主机/酒吧-> wordpress(通过 fpm)

代理部分工作正常,但 nginx -> wordpress 部分只是不断重定向到根页面。

当我 strace php-fpm 进程时,我看到点击进入,wordpress 实际上会思考并加载所有内容,但在最后一秒它只是重定向回根页面。

在 google 上找不到任何关于如何在 php 端查看传入的 fastcgi 参数的信息。猜测从 nginx 发送的标头有问题,但我不知道如何查看所有发送的内容。(strace 在这里不是很有帮助,因为它只给出前几个字节)

如果我通过 telnet 尝试并输入:

获取/HTTP/1.0<CR><CR>

我得到了您期望的正确内容(即:不重定向)。但从浏览器它被重定向。

0 投票
2 回答
1642 浏览

php - IE7 上的 HTTP 500 错误

对于我的开发环境,我最近从 IIS 上的 php 5.2 w/ ISAPI 迁移到 IIS 上的 PHP 5.3 w/ fastCGI,当我遇到错误(例如函数名不正确)时,我习惯于 PHP 报告 FATAL ERROR 等。 . 到浏览器。间歇性地而不是收到错误,我收到 HTTP 500。如果使用 firefox 浏览,则不会发生这种情况。

它似乎与 IE 缓存内容类型或类似的 HTTP 代码有关。我的理由是,如果我消除了有问题的代码块并刷新页面(在 IE 中),然后将有问题的代码放回,我会看到错误消息。

有谁知道我应该看什么?

display_errors 设置为 On....

试图在注释中添加代码,但它很难看,所以我要附加:
示例代码:index.php <?php php_infowrong(); ?>

如果我输入网站的 URL,我会得到:

在 Firefox 上,我收到:PHP 致命错误:在第 2 行的 D:\Web\pathtowebsite\index.php 中调用未定义函数 php_infowrong()

在 Internet Explorer 上,我收到:HTTP 500 Internal Server Error

如果我将 index.php 更改为 <?php phpinfo(); ?> Then IE 和 Firefox 都会给出正确的 php_info 页面。

如果我将 index.php 改回原来的错误形式并刷新页面,那么 IE 将显示:PHP Fatal error: Call to undefined function php_infowrong() in D:\Web\pathtowebsite\index.php

0 投票
7 回答
25250 浏览

php - 如何找出当前正在运行的 PHP 可执行文件?

从 PHP 程序内部,我想知道执行它的二进制文件的位置。Perl 有$^X为此目的。PHP中是否有等价物?

这样它就可以使用自己执行子 PHP 进程(而不是硬编码路径或假设“php”是正确的)。

更新

  1. 我使用的是 lighttpd + FastCGI,而不是 Apache + mod_php。所以是的,有一个 PHP 二进制文件。
  2. eval/include 不是一个解决方案,因为我正在生成一个服务器,它必须在请求之外继续存在。

我尝试过但不起作用的事情:

  • $_SERVER['_']看起来像我想要的命令行,但它实际上来自最后执行程序的 shell 设置的环境变量。从 Web 服务器运行时,这是 Web 服务器二进制文件。
  • which php将无法工作,因为不保证 PHP 二进制文件与 Web 服务器中的PATH.

提前致谢。

0 投票
2 回答
1574 浏览

fastcgi - 如何 ping FastCGI 服务器?

除了建立 TCP 连接之外,如何检查 FastCGI 服务器是否处于活动状态并正常运行?

我有许多远程、独立的 FastCGI 服务器。我想监视 FastCGI 服务器本身以确保它处于活动状态。仅仅向 Web 服务器发出请求是不够的,因为它会自动绕过死服务器。

谢谢!

0 投票
1 回答
329 浏览

apache - (22)Invalid argument: FastCGI: process manager exiting, setgid() failed

我正在尝试启动 Apache 服务器,我将使用 Fast CGI。当我尝试启动它时,我在 error_log 中收到以下错误消息。

[警报] (22)无效参数:FastCGI:进程管理器退出,setgid(4294967295) 失败

所以看起来它正在设置组 ID,当时它给出了这个警报消息。

关于此警报消息的任何想法?

0 投票
1 回答
2918 浏览

php - IIS FastCGI 上的 PHP 是否可以进行 HTTP 身份验证?

我刚刚从使用 php5isapi.dll 的 PHP 5.2.3 迁移到使用 FastCGI 和 php-cgi.exe 的 PHP 5.3.0。在这个站点上,我有一些用于 windows/ntlm/http 身份验证的钩子,如下所示:

这在带有 isapi 的 PHP 5.2.3 下工作得很好。现在我已经转移到 IIS6 上的 FastCGI,它坏了。它对我有用,但我在服务器上有管理员。没有管理员的人(大多数人)会看到以下一些变体:

我尝试过浏览文档和日志文件,但似乎没有取得任何进展。我实际上并不希望使用远程用户名来访问我的 .php 文件,我只想获取名称并与我的数据库匹配。anon 用户仍然应该是执行实际 php 的用户。

有什么线索吗?

0 投票
3 回答
7317 浏览

php - Lighttpd + PHP + FCGI

我对 Lighttpd、PHP 和 CGI​​ 有疑问。

我使用 OpenSUSE.10。

我已经构建了 lighttpd(版本 1.4.23)和 php(版本 5.3.0)。

这是 lighttpd 构建命令行:

这是 php 构建命令行:

这是php,php-cgi -v:

这是 lighttpd.conf:

这是启动 lig​​httpd 的命令行:

最后,lighttpd 创建了 lighttpd_error.log:

我的问题是:

1) 有没有人在 Ubuntu 或 OpenSUSE 上启动 lig​​httpd + PHP + FastCGI 的成功经验?

2) 为什么生成 fcgi 失败了?

即我想使用这样的 index.php 来测试我的网络服务器:

PS:

如果我删除

从 lighttpd.conf 中,lighttpd 成功启动,Firefox 显示 index.html(但不是 index.php):

更新:

感谢您的回复。

lighttpd_error.log 准确地说 FCGI 和 PHP 解释器有问题。

是的,在 SUSE 或 Ubuntu 中可以使用反向移植,但它们也不起作用。

我认为这是操作系统的问题。

我有嵌入式设备:

交叉编译器为此设备构建应用程序:

因此,我为 MIPS 目标构建了 Lighttpd 和 php,将它们复制到此设备,然后...服务器开始正常工作。我可以从 Mozilla 看到 index.php!

我不知道为什么 Lighttpd+PHP 在 PC 上不起作用。

决定:我在这个问题上得分。