Nginx কেবলমাত্র পিএইচপি ফাইল ডাউনলোড করা যদি পিএইচপি URL এ থাকে


8

আমি জানি এটি একটি জনপ্রিয় প্রশ্ন তবে আমার অনুরূপ সমস্যা সহ আমি কাউকে পাইনি। আমি পিএইচপি ফাইলগুলি পরিবেশন করতে পারি যতক্ষণ না। পিএইচপি এক্সটেনশন url এ না থাকে। উদাহরণ স্বরূপ:

আমি যদি আমার কাছে যাই তবে localhostআমার ইনডেক্স.এফপি ফাইলটি পরিবেশন করা হবে। আমি যদি যাই তবে আমি localhost/index.phpফাইলটি ডাউনলোড করি। এখানে আমার কনফিগারেশন:

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

    root /usr/share/nginx/html;
    index index.php index.html index.htm;

    # Make site accessible from http://localhost/
    server_name localhost;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;
        # Uncomment to enable naxsi on this location
        # include /etc/nginx/naxsi.rules
    }

    # Only for nginx-naxsi used with nginx-naxsi-ui : process denied requests
    #location /RequestDenied {
    #   proxy_pass http://127.0.0.1:8080;    
    #}

    error_page 404 /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    location ~ /\.ht {
        deny all;
    }
}

আমি এই সমস্যাটি নিয়ে বেশ বিভ্রান্ত হয়েছি এবং আমি ভাবছি যে এই বিষয়ে কারও অভিজ্ঞতা আছে কিনা।


আপনি কি আপনার পোস্ট করতে পারেন php.ini?
kraxor

উত্তর:


4

যদি এটি মাঝে মাঝে কাজ করে (যাতে আপনি জানেন যে পিএইচপি-এফপিএম আপ এবং কাজ করছে), তবে আমি এটি একটি এনজিঙ্ক্স সমস্যা হিসাবে বেশ সেট করব। আমি আপনার পিএইচপি লোকেশন ব্লকের কয়েকটি নিয়ম নিয়ে সন্দেহ করছি। তারা সম্ভবত কিছু ইউআরএল ভঙ্গ করছে যা nginx ফেলে দেয়।

ডিরেক্টরি সূচকগুলি ধরার জন্য আপনার কেবল দুটি লাইন প্রয়োজন :

location ~ \.php$ {
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    include fastcgi_params;
}

সেই অবস্থানে ফিরে যান, এনজিনেক্স পুনরায় লোড করুন এবং দেখুন কী ঘটে।

আপনার যদি পুনর্লিখনের প্রয়োজন হয় (ওয়ার্ডপ্রেসে সুন্দর ইউআরএল ইত্যাদি) আপনি এই জাতীয় কিছু যুক্ত করতে চান

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

তবে আপনি কেবল স্ট্যান্ডার্ড ইউআরএলগুলি কাজ করার পরে এটি করুন।


2
আমি পরিবর্তনগুলি করেছি এবং প্রথমে এটি কার্যকর হয়নি। তারপরে আমি আমার ব্রাউজারে থাকা ক্যাশে সরিয়েছি এবং এটি কার্যকর হয়েছে। সময় দেয়ার জন্য ধন্যবাদ! :)
ম্যাথিউ এ

1

এই একই সমস্যা ছিল, তবে, আমারও এই লাইনের দরকার ছিল

include fastcgi.conf;

আমারও ছিল

location ~* .+ {..}

এবং এটি নিশ্চিত হয়েছিল যে এটি অবস্থানের পরে চলেছে ~ \.php$ {..}


1
হুম আকর্ষণীয় include fastcgi.conf;প্রায় একই রকম include fastcgi_params;তবে অতিরিক্ত fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;কিছু কিছু ব্যবহারকারী যা তাদের সাইটের কনফিগারেশনে ম্যানুয়ালি অন্তর্ভুক্ত include fastcgi_params;করে তা অন্তর্ভুক্ত করে .conf
লাইভওয়্যারবিটি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.