ইউজেনডিরটি কনফিগার করার সময় এনগিনেক্স ফাস্টসিজি "প্রাথমিক স্ক্রিপ্ট অজানা"


10

আমি nginx কনফিগার করা ঘৃণা করি। এটা এত জটিল। আমি কীভাবে আমার ব্যবহারকারী ডায়ারে পিএইচপি পেতে পারি? আমার nginx.conf এর প্রাসঙ্গিক অংশটি এখানে:

    location ~ ^/~(.+?)(/.*)?$ {
        autoindex on;
        autoindex_exact_size off;
        alias /home/$1/public_html$2;

        location ~ \.php {
            include /etc/nginx/fastcgi.conf;
            fastcgi_intercept_errors on;
            fastcgi_pass  127.0.0.1:9000;
            fastcgi_index index.php;
        }
    }

এটি আমাকে ত্রুটি দেয়: FastCGI sent in stderr: "Primary script unknown" while reading response header from upstreamএনগিনেক্স ত্রুটি লগ এ।

এখানে আমার /etc/nginx/fastcgi.conf:

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;

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  HTTPS              $https if_not_empty;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

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;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

আমি ধরে নিচ্ছি এনজিনেক্স স্ক্রিপ্টের নামটি সঠিকভাবে সমাধান করছে না। আমার ফাইল সিস্টেমে কোথায় সন্ধান করতে হবে, এনজিঙ্ক্সকে বলার আমি ঘৃণা করি, অন্তর্নির্মিত কী (বা কমপক্ষে মানকৃত এবং ডকুমেন্টেড) কার্যকারিতা থাকতে হবে তার জন্য কাস্টম রেজিেক্সগুলি লিখছি।


বাকিটা কোথায়? অর্থাৎ /etc/nginx/fastcgi.conf?
মাইকেল হ্যাম্পটন

উত্তর:


9

সমস্যাটি হ'ল আপনার ফাস্টসিগি কনফনে আপনি SCRIPT_FILENAMEযেভাবে সংজ্ঞা দিয়েছেন $document_root$fastcgi_script_name;তবে আপনি aliasপথটি নির্ধারণের জন্য নির্দেশটি ব্যবহার করেন ।

আপনার SCRIPT_FILENAMEব্যবহারের জন্য আপনার আপডেট করা উচিত$request_filename

আপনি যদি পছন্দ করেন তবে নেস্টেড জায়গায়ও ফিরে যেতে পারেন। যদি আপনি পরেও এই ত্রুটিটি পান তবে আমি এখানে সমস্ত সম্ভাব্যতা নথিভুক্ত করেছি: http://blog.martinfjordvald.com/2011/01/no-input-file-specified-with-php-and-nginx/

অন্যান্য একাধিক কারণ থাকতে পারে তা পরীক্ষা করে দেখুন।


4

আপনি যখন পুনর্নির্দেশগুলি, উপাত্তগুলি সংজ্ঞায়িত করেন এবং আপনি এনজিনেক্সে আপনার সাইটের কনফেমে ফাস্টসিজি ব্যবহার করেন আপনি তাদের কাজ করার জন্য এটি চেষ্টা করতে পারেন:

পরিবর্তন:

অবস্থান ~ \ .php $ {
...
fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name;
...
}


মধ্যে:

অবস্থান ~ \। php $ {
...
fastcgi_param SCRIPT_FILENAME $ অনুরোধ_ফিলনাম;
fastcgi_param REQUEST_URI $ uri? gs আরগস;
...
}

এটি যদি REQUEST_URI ব্যতীত উপরের কথা মতো ব্যবহার করার চেষ্টা না করে, তাই এটি হবে:

অবস্থান ~ \। php $ {
...
fastcgi_param SCRIPT_FILENAME $ অনুরোধ_ফিলনাম;
...
}


এটি আমার জন্য ওএসএক্স সিয়েরাতে কাজ করেছে
অজয়বিসি

2

ব্যবহারকারীরগুলিতে locationপিএইচপি স্ক্রিপ্টগুলির জন্য একটি পৃথক ব্লক ব্যবহার করার চেষ্টা করুন । এটি নেস্ট করার দরকার নেই।

location ~ ^/~([^/]+)/(.+\.php)$ {
    alias /home/$1/public_html/$2;
    include /etc/nginx/fastcgi.conf;
    fastcgi_intercept_errors on;
    fastcgi_pass  127.0.0.1:9000;
    fastcgi_index index.php;
}

পরামর্শের জন্য ধন্যবাদ! আমি এখন একটু কাছাকাছি, কিন্তু এখনও একই একই ত্রুটি পেয়েছি।
nnyby
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.