Nginx - Рассматривает PHP как двоичный


Мы используем Nginx+FastCGI в качестве серверной части нашего сайта Drupal. Кажется, все работает нормально, за исключением этого URL-адреса. http:///sites/all/modules/tinymce/tinymce/jscripts/tiny_mce/plugins/smimage/index.php

(Мы используем модуль TinyMCE в Drupal, и указанный выше URL-адрес вызывается, когда пользователь пытается загрузить изображение)

Когда мы использовали Apache, все работало нормально. Однако nginx обрабатывает указанный выше двоичный URL-адрес и пытается загрузить его. (Мы убедились, что файл, указанный URL-адресом, является допустимым файлом PHP)

Есть идеи, что здесь может быть не так?

Я думаю, что это как-то связано с конфигурацией NGINX, но не совсем уверен, что это такое.

Мы будем очень признательны за любую помощь.

Конфигурация: Вот фрагмент из файла конфигурации nginx:

      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;
       }
Author: Think Floyd, 2009-06-25

3 answers

Сделай это

location ~ \.php$ {

Вместо

location ~ .php$ {
 2
Author: sth, 2009-08-18 05:18:34

Если это не помогло, также убедитесь, что у вас есть fastcgi, работающий на порту 8888. Вы можете проверить это с помощью:

netstat -la | grep :8888

Вы в порядке, если получите такой ответ:

tcp        0      0 localhost:9000          *:*                     LISTEN

Или попробуйте выполнить следующее и найдите, какой порт он прослушивает:

netstat -la | grep LISTEN
 1
Author: xentek, 2016-07-21 14:12:13

Возможно, php-файл запущен, но генерирует двоичный файл. Этот скрипт генерирует изображение? Трудно сказать, не видя какой-нибудь конфигурации.

 0
Author: Martin Redmond, 2009-06-25 21:08:27