【问题标题】:Nginx - Treats PHP as binaryNginx - 将 PHP 视为二进制文件
【发布时间】:2010-11-05 16:38:34
【问题描述】:

我们正在运行 Nginx+FastCgi 作为我们 Drupal 站点的后端。 一切似乎都很好,除了这个网址。 http:///sites/all/modules/tinymce/tinymce/jscripts/tiny_mce/plugins/smimage/index.php

(我们在Drupal中使用了TinyMCE模块,上面的url在调用的时候 用户尝试上传图片)

当我们使用 Apache 时,一切正常。 但是,nginx 会处理上面的 url Binary 并尝试下载它。 (我们已经验证了 url 所指向的文件是一个合法的 PHP 文件)

知道这里有什么问题吗?

我认为这与 NGINX 配置有关,但不完全确定那是什么。

非常感谢任何帮助。

配置: 这是 nginx 配置文件中的 sn-p:

      root /var/www/;
       index index.php;

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

       error_page 404 index.php;
       location ~*
\.(engine|inc|info|install|module|profile|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(code-style\.pl|Entries.*|Repository|Root|Tag|Template)$
{
               deny all;
       }

       location ~* ^.+\.(jpg|jpeg|gif|png|ico)$ {
             access_log        off;
           expires           7d;
       }

       location ~* ^.+\.(css|js)$ {
             access_log        off;
           expires           7d;
       }

       location ~ .php$ {
           include /etc/nginx/fcgi.conf;
           fastcgi_pass 127.0.0.1:8888;
           fastcgi_index index.php;
           fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
           fastcgi_param  QUERY_STRING     $query_string;
           fastcgi_param  REQUEST_METHOD   $request_method;
           fastcgi_param  CONTENT_TYPE     $content_type;
           fastcgi_param  CONTENT_LENGTH   $content_length;
       }

       location ~ /\.ht {
               deny  all;
       }

【问题讨论】:

  • 您是否偶然打开了eAccelerator?如果是,请禁用它,看看是否有效。

标签: php drupal binary download nginx


【解决方案1】:

做起来

location ~ \.php$ {

而不是

location ~ .php$ {

【讨论】:

  • 这意味着它也会匹配像 "foophp", .表示“任何字符”,因此将其转义以获得“真实”。这里完全没问题。
【解决方案2】:

如果没有这样做,还请确保您在端口 8888 上运行了 fastcgi。您可以通过以下方式进行检查:

netstat -la | grep :8888

如果你得到这样的回应,你就可以了:

tcp        0      0 localhost:9000          *:*                     LISTEN

或尝试以下方法并查找它正在侦听的端口:

netstat -la | grep LISTEN

【讨论】:

    【解决方案3】:

    也许 php 文件正在运行但生成了一个二进制文件。这个脚本会生成图像吗?没有看到一些配置很难说。

    【讨论】:

    • 感谢您的回复,马丁。我们已经验证 PHP 没有生成图像。我已使用配置详细信息更新了我的帖子。
    猜你喜欢
    • 1970-01-01
    • 2010-12-23
    • 1970-01-01
    • 2017-07-21
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多