এনগিনেক্স কেবল পিএইচপি-এফএমপি ব্যবহার করে পিএইচপি স্ক্রিপ্টগুলিতে 404 নিক্ষেপ করে


11

আমি nginx+ ব্যবহার করে একটি পরীক্ষার সার্ভার ইনস্টল করেছি php-fpm। আমি নিম্নলিখিত সমস্ত চেষ্টা করেছি:

Nginx + Php5-fpm পিএইচপি ফাইলগুলি রেন্ডারিং করে না

nginx + php fpm -> 404 পিএইচপি পৃষ্ঠা - ফাইল পাওয়া যায় নি

পিএইচপি ফাইলগুলিতে অ্যাক্সেস করার সময়, এনগিনেক্স একটি 404 ত্রুটি ছুড়ে দেয়

আমি যা চেষ্টা করেছি তার সংক্ষিপ্তসার:

  • পুনরায় ইনস্টল।
  • স্ক্রিপ্টের সুবিধাগুলি পরিবর্তন করা (এগুলিতে পরিবর্তিত 0777)।
  • fastcgi_intercept_errors on
  • চেক ইন rootস্তরে নির্দেশ: server, locationএবং location ~ \.php
  • চেক ইন fastcgi_param SCRIPT_FILENAMEনির্দেশ।

সার্ভার .phpস্ক্রিপ্টগুলিতে (এবং কেবলমাত্র) 404 প্রদান করে । আমি তাদের নাম পরিবর্তন করতে পারি .htmlএবং তারা ভাল থাকবে। আমি এই সম্পর্কে কীভাবে যেতে পারি?

এটি আমার nginx.conf:

user nginx;
worker_processes 1;

error_log  /var/log/nginx/error.log;

pid        /run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/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  /var/log/nginx/access.log  main;

    sendfile        on;
    keepalive_timeout  2;

    include /etc/nginx/conf.d/*.conf;

    index   index.html index.htm;

    server {
        listen       80;
        server_name  _;
        root         /var/www/html;

        location / {
            root /var/www/html;
            index index.php index.html index.htm;
        }

        error_page  404              /404.html;
        location = /40x.html {
            #root /var/www/html;
        }


        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            #root /var/www/html;
        }

        location ~ \.php$ {
            root           /var/www/html;
            try_files $uri =404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass   unix:/var/run/php5-fpm.sock;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }


    }

}

উত্তর:


14

এটি সমাধান। দেখা যাচ্ছে যে সমস্যাটি হ'ল পিএইচপি শুনছিল এমন সকেটে সেট করা অনুমতি। আমাকে কেবল ডাকা একটি নির্দেশিকা পরিবর্তন করতে listen.modeহয়েছিল/etc/php-fpm.d/www.conf

listen.mode = 0750

এবং ব্যবহারকারীকে এতে সেট করুন nginx:

listen.owner = nginx
listen.group = nginx

ফাইলটি দেখতে এরকম দেখাচ্ছে:

srwxr-x---. 1 nginx nginx 0 jul  8 08:59 /var/run/php5-fpm.sock

কারণ আমি টিসিপি পোর্টের পরিবর্তে একটি ইউনিক্স সকেট ব্যবহার করছিলাম:

listen = /var/run/php5-fpm.sock;

এছাড়াও, আমি এর 404পরিবর্তে পাচ্ছি 500বা 503আমার কাস্টম পৃষ্ঠাগুলিতে ত্রুটিগুলি পুনর্নির্দেশwww.conf করার জন্য কনফিগার করা হয়েছিল এবং সেগুলি না থাকায় আমি পাচ্ছি ।404

সম্পাদনা:

এটি প্রদর্শিত হয় যে ফেডোরার (ফেডোরা 22, 23) এনগিনেক্স বিতরণের বেশিরভাগ সংস্করণগুলিতে, এনজিনেক্স অ্যাপাচি ব্যবহারকারীকে ডিফল্টরূপে ব্যবহার করে এবং সকেটটিও ব্যবহারকারী অ্যাপাচে সেট করা থাকে, সুতরাং আর কোনও কনফিগারেশন প্রয়োজন নেই।


ঠিক আছে, আপনার অবশ্যই নিয়ন্ত্রণ করতে হবে: - কোন ব্যবহারকারী / গোষ্ঠী এনজিঙ্ক (বা কোনও ওয়েবসার্ভার) চালায় - কোন ব্যবহারকারী / গোষ্ঠী পিএইচপি-এফপিএম চালায়
দিমিত্রি ডাবোভিটস্কি

0

আমি আসলে একটি "পাওয়া গেল না" ত্রুটি পেয়েছি কারণ আমার পড়া একটি বই আমাকে /php_statusপিএইচপি-এফপিএম 7.0.x (বর্তমানে 7.0.19) এবং এনজিএনএক্স 1.12 (বর্তমানে 1.12.0) এ কনফিগার করা পথটির জন্য একটি ভুল মিলের স্ট্রিং দিয়েছে read

এখানে /etc/php/7.0/fpm/pool.d/{config}

pm.status_path = /php_status

এখানে কনফিগারেশনটি defaultরয়েছে /etc/nginx/sites-available(আমি উবুন্টুতে আছি)

server {
  listen 80 default;
  root /var/www;

  index index.html index.htm default.html;
  access_log /dev/null;
  error_log /dev/null;

  location / {
    try_files $uri $uri/ =404;
  }

  location /php_status {
    fastcgi_pass unix:/var/run/php7.0-fpm.sock;
    # fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
    include fastcgi_params;
    allow 127.0.0.1;
    deny all;
  }
}

দ্রষ্টব্য: নিম্নলিখিতটি এমনভাবে ডিজাইন করা হয়েছে যাতে তা /php_statusইন্টারনেটে সর্বজনীনভাবে উপলভ্য হয় না (পিএইচপি পরিবেশিত বা ডিফল্ট হোস্টের জন্য সেটআপ করা হয় না)। fastcgi_passএটিতে টিসিপি এবং ইউনিক্স-সকেট পিএইচপি-এফএমপি-র নির্দেশ অন্তর্ভুক্ত রয়েছে

আপনার পরে নিম্নলিখিত দুটি কমান্ড চালানো উচিত

sudo service nginx reload
sudo service php7.0-fpm restart

যাচাই করার জন্য চলমান চেষ্টা করুন

curl http://127.0.0.1/php_status
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.