标签: fastcgi

为什么 PHP 脚本不能通过命令行或任务调度程序在 server 2008 上写入文件?

我在 serverfault.com 上创建了一个问题,建议我在这里提问。

https://serverfault.com/questions/140669/why-cant-php-script-write-a-file-on-server-2008-via-command-line-or-task-schedul

我有一个 PHP 脚本。当我使用浏览器时,它运行良好。它在同一目录中写入一个 XML 文件。该脚本需要大约 60 秒才能运行,生成的 XML 文件大约为 16 MB。

我在 Windows Server Web edition SP1 64 位上通过 FastCGI 运行 PHP 5.2.13。

该代码从 SQL 服务器中提取库存,运行一个循环来为第三方构建一个 XML 文件。

我在任务调度程序中创建了一个任务来运行 c:\php5\php.exe "D:\inetpub\tools\build.php"

任务调度程序显示大约一分钟的时间流逝,这是脚本在浏览器中运行所需的时间。

没有返回错误,但没有创建文件。

每次更改计划任务属性时,都会出现一个用户密码框,然后我输入管理员帐户密码。

如果我在命令行运行相同的路径和参数,它不会出错,也不会创建文件。

当我以管理员身份右键单击运行命令提示符时,仍未创建该文件。我在文件创建之后得到了我的 echo 语句“文件已发布”,并且没有返回错误。

我正在做一个简单的 fopen fwrite fclose 来将 php 变量的内容保存到 .xml 文件中,并且只有在通过浏览器运行脚本时才会创建该文件。

下面是 xml-building 循环之后发生的事情:

$feedContent .= "</feed>";

sqlsrv_close( $conn );

echo "<p>feed built</p>";

$feedFile = "feed.xml";

$handler = fopen($feedFile, 'w');

fwrite( $handler, $feedContent );

fclose( $handler );

echo "<p>file published</p>"; …
Run Code Online (Sandbox Code Playgroud)

php fastcgi scheduled-tasks fwrite

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

Lighttpd,fastcgi 进程的命令行参数

我正在阅读lighttpd 中mod_fastcgi的文档,它说:

"bin-path": 本地 FastCGI 二进制文件的路径,如果没有本地 FastCGI 正在运行,应该启动它

如果我想让 lighttpd 直接启动我的 fastcgi 进程,并且该进程是由 python 脚本创建的怎么办?像这样的东西:

# bang omitted... I need to use python from virtualenv
# File runfastcgi.py
import os
import sys

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "atc.settings")
from django.core.management import execute_from_command_line
execute_from_command_line(['manage.py', 'runfcgi', ... ])
Run Code Online (Sandbox Code Playgroud)

此外,我正在使用 virtualenv,我有办法从环境中导出所有路径,甚至是 virtualenv 的 python 解释器的路径......唯一的问题是,根据 mod_fastcgi 文档,我只能通过二进制文件的路径,所以,我似乎不能这样做:

 bin-path => (env.ATC_VIRTUALENV + 'bin/python' + ' ' + 'runfastcgi.py')
Run Code Online (Sandbox Code Playgroud)

我错了吗?有没有要求lighttpd使用virtualenv python来执行自定义runfastcgi.py?

python django fastcgi lighttpd virtualenv

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

Nginx + FastCGI + C 抛出 502 Bad Gateway

我正在尝试使用 FASTCgi 运行 Nginx 来通过 C 应用程序后端处理请求。

我正在使用本教程:http://www.kutukupret.com/2010/08/20/nginx-fastcgi-hello-world-in-c/

我的nginx配置文件:

server
  {
    listen 80;
    listen [::]:80 default ipv6only=on;

    server_name localhost;

    location /
    {
      fastcgi_pass   127.0.0.1:8000;

      fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
      fastcgi_param  SERVER_SOFTWARE    nginx;
      fastcgi_param  QUERY_STRING       $query_string;
      fastcgi_param  REQUEST_METHOD     $request_method;
      fastcgi_param  CONTENT_TYPE       $content_type;
      fastcgi_param  CONTENT_LENGTH     $content_length;
      fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
      fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
      fastcgi_param  REQUEST_URI        $request_uri;
      fastcgi_param  DOCUMENT_URI       $document_uri;
      fastcgi_param  DOCUMENT_ROOT      $document_root;
      fastcgi_param  SERVER_PROTOCOL    $server_protocol;
      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)

我的 C …

c fastcgi nginx

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

我如何安装 php-cgi?我尝试了 MacPort、Package 和其他所有东西,但都不起作用

我正在尝试在我的 macbook(Yosemite 10.9.3)上安装 php-cgi,因为当我尝试在浏览器中打开内容时,PhpStorm IDE 不断向我回复“找不到 php-cgi”。我尝试使用较新版本的 php 解释器,因为当前版本是 5.4。但是我只能在 php.net 站点中找到这些包,但我不知道如何安装它。我也尝试下载自制软件,但又不知道如何从那里开始。我尝试使用 MacPort 通过使用以下行来安装 fastcgi:sudo port install php5 +fastcgi

但它返回这个:

--->  Dependencies to be installed: autoconf213 gawk gettext expat libiconv ncurses readline m4 perl5 perl5.16 gdbm bzip2 gsed libtool libxml2 xz zlib mhash pcre libedit pkgconfig

--->  Fetching archive for expat
--->  Attempting to fetch expat-2.1.0_0.darwin_13.x86_64.tbz2 from http://packages.macports.org/expat
--->  Attempting to fetch expat-2.1.0_0.darwin_13.x86_64.tbz2.rmd160 from http://packages.macports.org/expat
--->  Installing expat @2.1.0_0
--->  Activating expat @2.1.0_0
Error: org.macports.activate for port expat returned: Image …
Run Code Online (Sandbox Code Playgroud)

php cgi fastcgi macports phpstorm

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

FCGI和PSGI之间的Perl基准

我对FCGI协议的了解是,第一次调用应用程序时,它会将其加载到内存中,运行它,将响应返回给服务器,完成响应但不会结束应用程序,它会使其在内存中运行,然后下一个请求将使用此编译的应用程序的内存副本来处理请求.

阅读关于PSGI协议,它似乎以相同的方式工作.

我的问题是,我的假设是正确的,它们对于每秒请求的应用速度是一样的.

令人困惑的问题,如果他们的工作相同,为什么我看到plackup有命令行选项来启用FCGI.

perl fastcgi psgi

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

Apache 2.4 和 php-fpm 不会触发 php 页面的 apache http 基本身份验证

我相信这是一个在某处被问过的问题,如果是这样的话,请原谅,但是谷歌搜索并没有给我任何有形的东西。

这是我的场景:

我正在使用 apache http 基本身份验证保护 Web 目录。所以我在根文件夹中有我的 .htaccess 并且我的 httpd.conf 被配置为覆盖所有,以便它考虑 .htaccess 。我的.htaccess的内容如下:

AuthType 基本

身份验证名称“测试”

AuthUserFile /etc/httpd/.test_pass

需要有效用户

.test_pass 已经通过 htpasswd 设置成功。通过浏览器或任何 html 文件访问 Web 根文件夹时,我会正确弹出身份验证。使用密码为我提供了预期的访问权限。

但是当我访问一个 php 页面时,没有出现身份验证弹出窗口并且呈现 php 页面。

这是我的设置:

  • Apache 版本:2.4.6
  • php-fpm: PHP 5.4.16 (fpm-fcgi) 和 Zend Engine v2.4.0
  • 使用 proxy_fcgi_module (shared) 中的 proxypass 进行 apache 2.4 和 php-fpm 之间的通信
  • 另外我没有使用套接字连接,因为 apache 2.4.6 不支持它
  • 我的 proxypass 设置如下并且运行良好:ProxyPassMatch ^/(. .php(/. )?)$ fcgi://127.0.0.1:9000/var/www/html/$1

我需要能够通过 apache 基本身份验证设置用户名/密码身份验证,以保护目录中的每个文件,包括 php 文件。

我正在使用开源软件;因此修改软件代码是最后的手段。

php-fpm 和 mod_proxy_fcgi 有变通方法/解决方案吗?

谢谢

php apache proxy fastcgi centos7

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

nginx 服务器对不同的子文件夹使用多个 fastcgi 后端

StackOverflow 上有多个问题如何使用具有不同 fastcgi 后端的子文件夹或类似的问题但没有任何工作正常 - 经过几个小时的尝试和阅读文档(可能缺少一个小细节)我放弃了。

我有以下要求:

  • 在 php 5.6 应用程序上/运行(fastcgi 后端127.0.0.1:9000
  • /crmphp 7.0 应用程序上运行,它必须相信它正在运行/(fastcgi 后端127.0.0.1:9001
  • 事实上还有很少的后端,但是有了这两个我可以自己制作它们

在尝试删除/crm前缀之前,我尝试首先为位置前缀定义单独的 php 上下文。但似乎我做错了什么,因为/crm每次都使用/.

我的实际精简配置删除了所有不相关的内容和所有失败的测试:

server {
    listen       80;
    server_name  myapp.localdev;

    location /crm {
        root       /var/www/crm/public;
        index      index.php;
        try_files  $uri /index.php$is_args$args;

        location ~ \.php$ {
            # todo: strip /crm from REQUEST_URI
            fastcgi_pass   127.0.0.1:9001; # 9001 = PHP 7.0
            fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    }

    location / { …
Run Code Online (Sandbox Code Playgroud)

configuration fastcgi nginx nginx-location

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

NGINX + Wordpress 给出 ERR_TOO_MANY_REDIRECTS

我一直在尝试使用 NGINX 作为网络服务器来托管一个简单的 Wordpress 博客。该博客作为domain_name.com/blog 下的子目录托管。

主博客可以正确打开。但是当尝试打开domain_name.com/blog/wp-admin下的wp-admin时,我的浏览器显示ERR_TOO_MANY_REDIRECTS。

我不确定这是否是我的 NGINX 配置或 WordPress 配置的问题。以下是我的 NGINX 服务器块:

server {
  listen 80;
  server_name <domain_name.com>;
  root /var/www/html;
  index index.php;

  location /blog {
    try_files $uri $uri/ /blog/index.php?$args;
  }

  location ~ \.php$ {
    include fastcgi.conf;
    fastcgi_intercept_errors on;
    fastcgi_pass php;
  }

  location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
    expires max;
    log_not_found off;
  }
}
Run Code Online (Sandbox Code Playgroud)

WordPress 安装在 /var/www/html/blog 目录下。数据库中“siteurl”和“home”wp_options 的值都指向domain_name.com/blog。

解决这个问题的好方法是什么?

可能有用的附加说明:当我尝试访问 wp-content 目录下的静态文件时,它们打开时没有任何问题。那里没有重定向错误。

php wordpress redirect fastcgi nginx

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

运行django作为fastcgi时的stdout

我已经将我的Django应用程序配置为在Linux上运行Apache + FastCGI(Ubuntu,如果重要的话).我的问题是:当运行Django作为fastcgi时,如何将stdout重定向到文件.

编辑 澄清:我熟悉django-logging模块,是的,我已经使用它了.这不是我的问题所在.

说当我从控制台运行Django时

python manage.py runserver
Run Code Online (Sandbox Code Playgroud)

我得到了控制台中显示的所有请求,错误等,这是stdout.但是,当我在apache下运行fastcgi时,stdout会去哪里?

apache django fastcgi

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

如何用PHP清除fastcgi_cache?

是否有内置方法用PHP清除Nginx fastcgi_cache?我知道我可以编写一个PHP脚本,并通过手动删除所有缓存文件,但这看起来太像黑客了.

php fastcgi nginx

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