标签: fastcgi

为什么我的简单 fastCGI Perl 脚本会失败?

我不是 Perl 世界的人,所以其中一些对我来说是新的。我正在运行 Ubuntu Hardy LTS,并安装了 apache2 和 mod_fcgid 软件包。我想让 MT4 在 fcgid 而不是 mod-cgi 下运行(它似乎可以在普通的 CGI 下运行)。

我似乎无法让一个简单的 Perl 脚本在 fcgid 下运行。我创建了一个简单的“Hello World”应用程序,并包含了上一个问题中的代码来测试 FCGI 是否正在运行。

我将脚本命名为 HelloWorld.fcgi(当前 fcgid 设置为仅处理 .fcgi 文件)。代码:

#!/usr/bin/perl

use FCGI;

print "Content-type: text/html\n\n";
print "Hello world.\n\n";
my $request = FCGI::Request();
if ( $request->IsFastCGI ) { 
    print "we're running under FastCGI!\n";
} else { 
    print "plain old boring CGI\n";
}
Run Code Online (Sandbox Code Playgroud)

当从命令行运行时,它会打印“plain old Boring...”当通过对 apache 的 http 请求调用时,我收到 500 内部服务器错误,并且脚本的输出被打印到 Apache 错误日志中:

Content-type: text/html

Hello …
Run Code Online (Sandbox Code Playgroud)

perl fastcgi mod-fcgid movabletype

5
推荐指数
1
解决办法
1万
查看次数

相对路径没有这样的文件或目录

我在一个 python 文件 - backend.py 中有一个 Bottle 应用程序。该文件包含以下定义:

variable = {
    'field': [f for f in csv.DictReader(open('../data/fields.csv', 'rb'), delimiter=';')]
}

def run_fcgi():
    from bottle import FlupFCGIServer
    run(port=8080, server=FlupFCGIServer)

if __name__ == "__main__":
    run(host='0.0.0.0', port=8087, server='waitress')
Run Code Online (Sandbox Code Playgroud)

当我像这样运行这个应用程序时:

python backend.py
Run Code Online (Sandbox Code Playgroud)

应用程序启动成功。

当我由主管将此应用程序作为 fcgi 应用程序(fcgi.py)运行时:

#!my_path_to_python

if __name__ == '__main__':
    import backend
    backend.run_fcgi()
Run Code Online (Sandbox Code Playgroud)

我有一个错误:

Traceback (most recent call last):
  File "path_to_my_project/fcgi.py", line 9, in <module>
    import backend
  File "path_to_my_project/backend.py", line 49, in <module>
    'msk': [i for i in csv.DictReader(open('../data/fields.csv', 'rb'), delimiter=';')],
IOError: [Errno …
Run Code Online (Sandbox Code Playgroud)

python fastcgi bottle

5
推荐指数
1
解决办法
6889
查看次数

在 Nginx 中设置 Wordpress 和 Rails

我为 Rails 应用程序设置了 nginx,它对我来说工作得很好。现在我想将我的 Wordpress 博客从 移动blog.website.comwebsite.com/blog,以便网络爬虫将其视为网站的一部分。

我在 Rails 应用程序的public/目录中创建了一个符号链接,并将以下内容添加到我的 nginx 配置中:

# Rails server
server {
    root /project/path/current/public;
    server_name project.com;
    passenger_enabled on;
    rails_env production;
    client_max_body_size 20m;

    if ($http_x_forwarded_proto != 'https') {
        return 301  https://$host$request_uri;
    }

    location /blog {
        index    index.html  index.php;
        try_files $uri $uri/ /blog/index.php?q=$uri&$args;

        if (!-e $request_filename) {
            rewrite ^.+?(/blog/.*.php)$ $1 last;
            rewrite ^ /blog/index.php last;
        }
    }

    location ~ \.php$ {
    try_files $uri =404;
    fastcgi_intercept_errors on;
    include fastcgi_params;
    fastcgi_index  index.php;
    fastcgi_param …
Run Code Online (Sandbox Code Playgroud)

php wordpress fastcgi ruby-on-rails nginx

5
推荐指数
1
解决办法
1877
查看次数

当 fastcgi 后端偶尔使用内容编码进行 gzip 服务时,如何禁用 Nginx 双 gzip 编码?

如果后端已经设置了“content-encoding”标头,是否有任何聪明的方法可以欺骗 nginx 停止 gzip?

Nginx 配置为对 php fastcgi 后端的输出进行 gzip 压缩。

这在 99% 的情况下都很有效。

除了极少数情况外,php 会发送一个原始 gzip 压缩文件并附加一个Content-Encoding: gzip标头。

不幸的是,Nginx 会继续尝试第二次对该内容进行 gzip 压缩。

生成双content-encoding: gzip content-encoding: gzip标头和双编码 gzip 正文。

大多数现代浏览器都可以处理这个问题,比如 Firefox、Chrome。

IE8 不能,Safari 移动版不能,旧版 Safari 5 for Windows 不能 - 相反,它们会显示乱码的 gzip 压缩内容,因为它合并了内容编码标头,并且仅对 gzip 压缩正文进行一次解码。

感谢您的任何想法。

php gzip fastcgi content-encoding nginx

5
推荐指数
1
解决办法
2587
查看次数

$_SERVER['REMOTE_PORT'] 没有给出值

我们有nginx/1.9.1

执行此操作时phpinfo(),无法获取以下参数的值。

$_SERVER["REMOTE_PORT"] // no value
$_ENV["REMOTE_PORT"]    // no value
Run Code Online (Sandbox Code Playgroud)

尽管我们在FastCGI配置文件中有以下设置

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;
Run Code Online (Sandbox Code Playgroud)

有人可以指导错误在哪里吗?

php port fastcgi nginx

5
推荐指数
0
解决办法
1195
查看次数

如何中断libfcgi中的Accept方法?

我正在使用 libfcgi (fcgiapp) 库编写 FastCGI 应用程序。问题出在FCGX_Accept_r方法内部,该方法等待传入连接并阻塞线程。正如我所看到的,它没有任何超时,因此程序流无法继续执行,直到请求到达。

我尝试FCGI_FAIL_ACCEPT_ON_INTR在方法中设置标志FCGX_InitRequest以使接受函数中断,但没有成功。

设置 FCGI_FAIL_ACCEPT_ON_INTR 可防止 FCGX_Accept() 在中断后重新启动。

我也尝试过拨打电话FCGX_ShutdownPending,但它似乎拒绝新的传入连接,并且不会停止侦听下一个连接。

阻止库接受任何新请求。信号处理程序安全。

你能告诉我还能做什么来打破FCGX_Accept_r等待吗?

c++ multithreading fastcgi

5
推荐指数
1
解决办法
1632
查看次数

PHP-FPM 无法连接到 FastCGI 服务器

所以我第一次设置 PHP5-FPM,一开始一切都很顺利,我可以看到我的网站启动并运行,直到我做了一些调整

/etc/php5/fpm/pool.d/www.conf
Run Code Online (Sandbox Code Playgroud)

具体在这些方面:

pm.max_children = 100 # The hard-limit total number of processes allowed
pm.start_servers = 20 # When nginx starts, have this many processes waiting for requests
pm.min_spare_servers = 10 # Number spare processes nginx will create
pm.max_spare_servers = 20 # Number spare processes attempted to create
pm.process_idle_timeout = 10s;
Run Code Online (Sandbox Code Playgroud)

当我重新启动 apache 和 php5-fpm 服务时,出现以下错误:

[Wed Nov 25 02:39:43.973654 2015] [fastcgi:error] [pid 5438] (2)No such file or directory: [client 36.72.129.207:60098] FastCGI: failed to connect to server "/usr/lib/cgi-bin/php5-fcgi": connect() …
Run Code Online (Sandbox Code Playgroud)

php apache fastcgi

5
推荐指数
0
解决办法
2845
查看次数

Apache2.4 快速 CGI 参数如 nginx

Nginx 配置允许分别为每个站点的 fastcgi 服务器设置参数:

    location ~ \.(php)$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param PHP_ADMIN_VALUE "open_basedir=/home/***";
        fastcgi_param PHP_ADMIN_VALUE "session.save_path=/home/***/tmp";
        include        fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
}   
Run Code Online (Sandbox Code Playgroud)

在Apache2.4配置中如何做到这一点?我要改进的变体是:

<IfModule mod_fastcgi.c> 
   AddHandler php7.fcgi .php 
   Action php7.fcgi /php7.fcgi 
   Alias /php7.fcgi /usr/lib/cgi-bin/php7.fcgi 
   FastCgiExternalServer /usr/lib/cgi-bin/php7.fcgi -host 127.0.0.1:9000 -pass-header Authorization -idle-timeout 3600 
   <Directory /usr/lib/cgi-bin>
       Require all granted
   </Directory> 
</IfModule> 
Run Code Online (Sandbox Code Playgroud)

fastcgi apache2.4 php-7

5
推荐指数
0
解决办法
2308
查看次数

如何设置 max_execution_time php-fpm docker 镜像?

我正在使用来自https://hub.docker.com/_/php/ 的php5.6-fpm docker 图像。

当我检查 phpinfo() 中的 php.ini 位置时,它说它是 /usr/local/etc/php,但是当我查看该路径时,那里没有 php.ini。

现在我想更改 max_execution_time php 变量。如何在自定义 docker 映像中执行此操作?

php fastcgi docker dockerfile fpm

5
推荐指数
2
解决办法
1万
查看次数

Nginx - 405 NOT ALLOWED - fastcgi 超时

我正在尝试使用带有 php 5.6 和 nginx 的 Synology 来设置网站。该网站是 WordPress 和一个主题。在处理演示导入时,我们有 NGINX 错误 405(不允许)。

这有点令人沮丧,因为我喜欢事情做得很好。

我查看了 php.ini 文件和 nginx.conf 文件。

# Copyright (c) 2000-2016 Synology Inc. All rights reserved.

worker_processes        auto;
#worker_cpu_affinity    auto;
worker_rlimit_nofile    65535;

include conf.d/main.conf;

events {
    use             epoll;
    multi_accept    on;
    worker_connections 1024;

    include conf.d/events.conf;
}

http {
    include         mime.types;
    default_type    application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
        '$status $body_bytes_sent "$http_referer" '
        '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  off;
    #access_log syslog:server=unix:/dev/log,facility=local7,tag=nginx_access,nohostname main;
    error_log   syslog:server=unix:/dev/log,facility=local7,tag=nginx_error,nohostname error;

    sendfile        on;
    server_tokens   off;

    proxy_request_buffering …
Run Code Online (Sandbox Code Playgroud)

php apache wordpress fastcgi nginx

5
推荐指数
1
解决办法
3825
查看次数