এনগিনেক্স 1 ফাস্টসিজিআই স্টাডারে প্রেরণ করা হয়েছে: "প্রাথমিক স্ক্রিপ্ট অজানা"


81

আমার প্রথমবার Nginx ব্যবহার করে, তবে আমি আপাচি এবং লিনাক্সের সাথে বেশি পরিচিত। আমি একটি বিদ্যমান প্রকল্প ব্যবহার করছি এবং যখনই আমি index.php দেখার চেষ্টা করছি আমি একটি 404 ফাইল পাইনি।

এখানে অ্যাক্সেস.লগ এন্ট্রি রয়েছে:

2013/06/19 16:23:23 [error] 2216#0: *1 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.ordercloud.lh"

এবং এখানে সাইট-উপলভ্য ফাইলটি রয়েছে:

server {
    set $host_path "/home/willem/git/console/www";
    access_log  /www/logs/console-access.log  main;

    server_name  console.ordercloud;
    root   $host_path/htdocs;
    set $yii_bootstrap "index.php";

    charset utf-8;

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

    location ~ ^/(protected|framework|themes/\w+/views) {
        deny  all;
    }

    #avoid processing of calls to unexisting static files by yii
    location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
        try_files $uri =404;
    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php {
        fastcgi_split_path_info  ^(.+\.php)(.*)$;

        #let yii catch the calls to unexising PHP files
        set $fsn /$yii_bootstrap;
        if (-f $document_root$fastcgi_script_name){
            set $fsn $fastcgi_script_name;
        }

        fastcgi_pass   127.0.0.1:9000;
        include fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fsn;

        #PATH_INFO and PATH_TRANSLATED can be omitted, but RFC 3875 specifies them for CGI
        fastcgi_param  PATH_INFO        $fastcgi_path_info;
        fastcgi_param  PATH_TRANSLATED  $document_root$fsn;
    }

    location ~ /\.ht {
        deny  all;
    }
}

আমার / হোম / উইলেম / গিট / কনসোলের মালিকানা www-ডেটা: www-ডেটা (আমার ওয়েব ব্যবহারকারী পিএইচপি ইত্যাদি চালাচ্ছেন) এবং হতাশার বাইরে আমি 77 777 অনুমতি দিয়েছি ...

আমার সর্বোত্তম অনুমান যে কনফিগারেশনে কিছু ভুল আছে তবে আমি তা বুঝতে পারি না ...

আপডেট করুন তাই আমি এটিকে সরিয়ে নিয়েছি /var/www/এবং আরও অনেক বেসিক কনফিগার ব্যবহার করেছি:

server {
    #listen   80; ## listen for ipv4; this line is default and implied
    #listen   [::]:80 default ipv6only=on; ## listen for ipv6

    root /var/www/;
    index index.html index.htm;

    # Make site accessible from http://localhost/
    server_name console.ordercloud;

    location / {
        root           /var/www/console/frontend/www/;
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  /var/www;
            include        fastcgi_params;
    }

    location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
            try_files $uri =404;
        }

    location /doc/ {
        alias /usr/share/doc/;
        autoindex on;
        allow 127.0.0.1;
        deny all;
    }

}

এছাড়াও আমি যদি কল localhost/console/frontend/www/index.phpকরি তবে আমি একটি 500 পিএইচপি পাই যার অর্থ এটি সেখানে পরিবেশিত হচ্ছে। এটি কেবল কনসোল.অর্ডারক্লাউড সরবরাহ করছে না ...


আর একটি সম্ভাব্য কারণ: আপনি যদি পিএইচপি-এফপিএম ব্যবহার করে থাকেন তবে নিশ্চিত হয়ে নিন যে ব্যবহারকারী /etc/php-fpm.d/www.conf এ সেট করার জন্য ব্যবহারকারী যে স্ক্রিপ্টটি চালনার চেষ্টা করছেন তার অনুমতি রয়েছে। আমি মনে করি এটি অ্যাপাচে ডিফল্ট।
ডেভ

আপনার SElinux সক্ষম করার অন্য একটি সম্ভাব্য কারণ, SElinux কনফিগারেশন চেকআউট করুন এবং এটি অক্ষম করুন।
সি কে.গুয়েইন

আমি স্রেফ আমার হোস্ট কনফিগারেশনটি এফসিজিআইডি (ভার্চুয়াল সার্ভারের মালিক হিসাবে চালিত) থেকে এফপিএম (ভার্চুয়াল সার্ভারের মালিক হিসাবে চালিত) এ পরিবর্তন করেছি। পিএইচপি 7.2-
এফএমপি

উত্তর:


92

"প্রাথমিক স্ক্রিপ্ট অজানা" ত্রুটি বার্তাটি প্রায়শইSCRIPT_FILENAME এনজিএনএক্স fastcgi_paramনির্দেশিকাতে ভুলভাবে সেট (বা ভুল অনুমতি, অন্যান্য উত্তর দেখুন) এর সাথে সম্পর্কিত related

আপনি ifপ্রথমে পোস্ট করেছেন এমন কনফিগারেশনটিতে আপনি ব্যবহার করছেন । ভাল এটি এখনই ভালভাবে জানা উচিত যে যদি মন্দ হয় এবং প্রায়শই সমস্যা তৈরি করে।

rootলোকেশন ব্লকের মধ্যে নির্দেশিকা নির্ধারণ করা খারাপ অভ্যাস, অবশ্যই এটি কাজ করে।

আপনি নিম্নলিখিত মত কিছু চেষ্টা করতে পারেন:

server {
    location / {
        location ~* \.php$ {
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_pass 127.0.0.1:9000;
            try_files $uri @yii =404;
        }
    }
    location @yii {
        fastcgi_param SCRIPT_FILENAME $document_root$yii_bootstrap;
    }
}

দয়া করে নোট করুন যে উপরের কনফিগারেশনটি অনির্যুক্ত। nginx -tএনজিনেক্স যে মুহুর্তে সনাক্ত করতে পারে তা পরীক্ষা করার জন্য আপনার এটি প্রয়োগ করার আগে চালিত করা উচিত ।


1
এটি আমার জন্য এটি সমাধান; আমি অবগত ছিলাম না যে আপনাকে $ ডকুমেন্ট_রূট উপসর্গ করতে হবে, আমি ধরে নিয়েছি যে এটি স্বয়ংক্রিয়ভাবে, মূলের উপর ভিত্তি করে।
বি01

3
লোকেশনটির rootভিতরে অবস্থান নির্ধারণের খারাপ অনুশীলন সম্পর্কে কেউ আরও কোথায় জানতে পারে ?
ড্যান ড্যাসকলেসকু

15
প্রধান nginx যুক্ত করুন: যারা ঠিক বুঝতে পারছি না কিভাবে পরিবর্তনশীল ভুল হতে পারে জন্য httpনিম্নলিখিত অধ্যায়: log_format scripts '$document_root$fastcgi_script_name > $request';(অথবা আপনি যা SCRIPT_FILENAME করার খাওয়ানোর করছি), এবং আপনার কাছে server: access_log /var/log/nginx/scripts.log scripts। পুনরায় লোড করুন এবং আপনার নতুন স্ক্রিপ্টগুলি লগ দেখুন;)
igorsantos07


3
Yii_bootstrap কি?
ভালবাসুন

43

এটা না সবসময় যে SCRIPT_FILENAMEভুল।
এটিও হতে পারে যে পিএইচপি ভুল ব্যবহারকারী / গোষ্ঠী হিসাবে চলছে

এই উদাহরণটিতে নির্দিষ্ট ম্যাক OS X , যা আমার অভিজ্ঞতা সেটআপ সবচেয়ে বিরক্তিজনক আছে (ডেবিয়ান তুলনার সহজ) - আমি শুধু 7.0 করার পিএইচপি 5.6 থেকে উন্নত করেছেন, ব্যবহার homebrew এবং চমৎকার josegonzalez প্যাকেজ।

সমস্যাটি ছিল কনফিগার ফাইলগুলির একটি নতুন অনুলিপি তৈরি করা হয়েছিল।

মূল কনফিগার ফাইলটি /usr/local/etc/php/7.0/php-fpm.conf, তবে পুল সংজ্ঞা বিভাগটি নোট করুন যেখানে এটিতে একটি সম্পূর্ণ উপ-ডিরেক্টরি অন্তর্ভুক্ত রয়েছে।

include=/usr/local/etc/php/7.0/php-fpm.d/*.conf

ইন php-fpm.dএকটি এর www.confফাইল। ডিফল্টরূপে এটি রয়েছে:

user = _www
group = _www

ওএস এক্স-এ আপনার এটি পরিবর্তন করতে হতে পারে:

user = [your username]
group = staff

(আপনার এটি ls -lhআপনার ডকুমেন্ট_রোটের সাথে মেলে

দুর্ভাগ্যক্রমে এই পরিবর্তন ব্যতীত, আপনি এখনও এটি আপনার এনগিনেক্স ত্রুটি লগটিতে দেখতে পাবেন এমনকি যদি এটি সঠিক জায়গায় ফাইলটি সন্ধান করে

"Primary script unknown" while reading response header from upstream

এটি বর্তমানে যা চলছে তা যাচাই করুন:

ps aux | grep 'php-fpm'

বা আরও পরিষ্কারভাবে:

ps aux | grep -v root | grep php-fpm | cut -d\  -f1 | sort | uniq

স্ক্রিপ্ট ফাইলের নামটি সঠিক কিনা তা যাচাই করবেন:

(অন্যান্য উত্তরে আইগরসরস07 থেকে চুরি করা)

httpমূল ব্লকে যুক্ত করুন /usr/local/etc/nginx/nginx.conf:

log_format scripts '$document_root$fastcgi_script_name > $request';

(যেখানে আপনি বর্তমানে যা ব্যবহার করছেন তা প্রথম বিটটির হওয়া দরকার, যাতে আপনি এটি সঠিক কিনা তা দেখতে পারেন))

এবং আপনার সাইটের serverব্লকে আপনি সুনির্দিষ্টভাবে নির্ধারিত লগটি ব্যবহার করতে :

access_log /var/log/nginx/scripts.log scripts;

যদি এটি সঠিক হয় তবে অনুরোধ করা উদাহরণস্বরূপ / phpinfo.php এই জাতীয় কিছু তৈরি করবে:

/path/to/docroot/phpinfo.php > GET /phpinfo.php

আপনি কি আপনার বিদ্যমান কনফিগারেশনটি সহজ করতে পারবেন?

আপনি location ~ \.php {ইন্টারনেট থেকে কোথাও থেকে অনুলিপি / আটকানো একটি ব্লক ব্যবহার করছেন ? বেশিরভাগ প্যাকেজ আপনাকে আরও দ্রুত এবং পরিষ্কারভাবে এটি করার অনুমতি দেয়। যেমন ওএস এক্স-এ আপনার এখন এটির দরকার:

location ~ \.php {
    fastcgi_pass 127.0.0.1:9000;
    include snippets/fastcgi-php.conf;

    # any site specific settings, e.g. environment variables
}

ফাস্টসিগি_স্প্লিট_পাথ_ইনফো, ট্রাই_ফাইলস এবং ফাস্টসিজি_ইন্ডেক্স (সূচি.এফপি-র ডিফল্ট) এর মতো বিষয় রয়েছে /usr/local/etc/nginx/snippets/fastcgi-php.conf

এর বদলে অন্তর্ভুক্ত রয়েছে সেটিংসের /usr/local/etc/nginx/fastcgi.confএকটি তালিকা, fastcgi_paramগুরুত্বপূর্ণ SQLT_FILENAME সহ।

rootপিএইচপি লোকেশন ব্লকে কখনও সদৃশ করবেন না ।


2
খুব সুন্দর! এটা কি আমার জন্য! চিয়ারস সাথী!
রোলস অ্যাপলেট্রি

ধন্যবাদ। আমার জন্য যে এফএম / এনগিনেক্স ডকার পাত্রে আমি চালাচ্ছিলাম তাদের এই ফোল্ডারগুলিতে অ্যাক্সেসের অনুমতি সংক্রান্ত সমস্যা ছিল।
টেক

@ ফ্লেশগ্রিন্ডারের উত্তরটি ভুল এবং আপনার সঠিক! আমার ক্ষেত্রে এটি ছিল প্রকৃতপক্ষে, শুধুমাত্র মালিকানা সংশোধন একটি ব্যাপার /etc/php/7.0/php-fpm.d/www.confফাইল। আপনাকে চিয়ারস, কুঁড়ি। :) অসচ্ছল জনপ্রিয়তা বাড়তে থাকায় আরও অনেকে এই সমস্যাটি দেখতে শুরু করতে পারেন।
ব্যবহারকারী 39277878

/usr/local/etc/nginx/snippets/fastcgi-php.confআমার ম্যাকের ভিতরে কিছু খুঁজে /usr/local/etc/nginx/fastcgi.conf
পেল

সুন্দর!! ঘন্টা ধরে লড়াই করা হয়েছে
ফোনিণী

7

ঠিক আছে, তাই 3 টি জিনিস আমি এক দিনের লড়াইয়ের পরে পেয়েছি

  1. কোনও কারণে 9000 বন্দরটিতে ইতিমধ্যে আমার কিছু চলছিল তাই আমি 9001 এ পরিবর্তিত হয়েছি
  2. আমার ডিফল্ট সাইটটি আমার নতুনটিকে বাধা দিচ্ছিল, আবার আমি কেন স্ট্যান্ডের আওতায় আছি না কেন এটি করা উচিত নয়, তবে আমি কেবল এটি লিঙ্কমুক্ত করেছি
  3. Nginx সাইট-সক্ষম করার জন্য উপলব্ধ সাইটগুলির জন্য সিম লিঙ্কটি স্বয়ংক্রিয়ভাবে করে না।

আশা করি এটি কারও কোনও সমস্যা বাঁচায়!


হ্যালো @ ওয়ে0, আমার সেটআপ নিয়ে আমার একই সমস্যা রয়েছে facing আমিও বন্দর 3001 আমার অন্য অ্যাপ্লিকেশন চলমান আছে, তাই আমি বন্দর 3002. আমার পিএইচপি অ্যাপ্লিকেশন হোস্ট করার জন্য তুমি আমার আসল পোস্ট এখানে দেখতে পারেন আছে: stackoverflow.com/questions/33229867/... এবং stackoverflow.com/questions/33409539/... এবং অন্যটি হ'ল স্ট্যাকওভারফ্লো . com/ প্রশ্নগুলি / ৩৩৫৫৯৯৯৯ /।। যদি আপনার কোন ধারণা আছে?
মনীষ সপকাল

3
স্বয়ংক্রিয়ভাবে সাইট-সক্ষম থাকা সাইটগুলি থেকে উপলভ্যগুলি তৈরি করা ভাল, অযাচিত, অনাকাঙ্ক্ষিত। এই চিহ্নগুলি তৈরি করা আপনার উপর নির্ভর করে যাতে আপনার সার্ভারে কোন সাইটগুলি 'চালু' এবং কোনটি 'অফ' রয়েছে তা আপনি নিয়ন্ত্রণ করতে পারেন।
ইরাথিয়েল

6

আরও নতুন এনগিনেক্সের সাথে একই সমস্যা ছিল (v1.8)। আরও নতুন সংস্করণ snippets/fastcgi-php.conf;পরিবর্তে ব্যবহার করার পরামর্শ দেয় fastcgi.conf। সুতরাং আপনি যদি include fastcgi.confকোনও টিউটোরিয়াল থেকে অনুলিপি / আটকানো হয় তবে আপনি লগতে Primary script unknownত্রুটিটি শেষ করতে পারেন ।


4

"প্রাথমিক স্ক্রিপ্ট অজানা" দ্বারা ঘটিত হয় SELinux সুরক্ষা প্রসঙ্গ।

ক্লায়েন্ট প্রতিক্রিয়া পেতে

ফাইল পাওয়া যায় নি।

nginx error.log নিম্নলিখিত ত্রুটি বার্তা আছে

* 19 ফাস্টসিজিআই স্টাডারে প্রেরণ: উজান থেকে প্রতিক্রিয়া শিরোনাম পড়ার সময় "প্রাথমিক স্ক্রিপ্ট অজানা"

সুতরাং কেবল সুরক্ষার প্রসঙ্গের ধরণের ওয়েব রুট ফোল্ডারটিকে httpd_sys_content_t এ পরিবর্তন করুন

chcon -R -t httpd_sys_content_t /var/www/show




nginx / php-fpm কনফিগারেশনের জন্য 3 জন ব্যবহারকারী রয়েছেন

/etc/nginx/nginx.conf

user nobody nobody;  ### `user-1`, this is the user run nginx woker process
...
include servers/*.conf;

/etc/nginx/conf.d/www.conf

location ~ \.php$ {
#   fastcgi_pass 127.0.0.1:9000;  # tcp socket
    fastcgi_pass unix:/var/run/php-fpm/fpm-www.sock;  # unix socket
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

/etc/php-fpm.d/www.conf

[www]
user = apache  ### `user-2`, this is the user run php-fpm pool process
group = apache

;listen = 127.0.0.1:9000  # tcp socket
listen = /var/run/php-fpm/fpm-www.sock  # unix socket

listen.onwer = nobody  ### `user-3`, this is the user for unix socket, like /var/run/php-fpm/fpm-www.sock
listen.group = nobody  # for tcp socket, these lines can be commented
listen.mode = 0660

ব্যবহারকারী -১ এবং ব্যবহারকারী -২ একরকম হওয়ার দরকার নেই।

ইউনিক্স সকেটের জন্য, ব্যবহারকারী -1 এর ব্যবহারকারী -3 সমান হওয়া দরকার, যেমন এনজিনেক্স ফাস্টসিগি_পাসের ইউনিক্স সকেটে পড়ার / লেখার অনুমতি থাকতে হবে।

অন্যথায় nginx 502 খারাপ গেটওয়ে পাবেন , এবং nginx ত্রুটি.লগ নিম্নলিখিত ত্রুটি বার্তা আছে

* ৩ connect সংযোগ () ইউনিক্সে: /var/run/php-fpm/fpm-www.sock ব্যর্থ হয়েছে (13: অনুমতি প্রত্যাখ্যান হয়েছে) উজানের সাথে সংযোগ করার সময়

এবং ওয়েব / রুট ফোল্ডারের ব্যবহারকারী / গোষ্ঠী (/ var / www / show) এই 3 টি ব্যবহারকারীর মতো হওয়ার দরকার নেই।


2

আমারও এই সমস্যাটি ছিল এবং আমি লাইনগুলি বিনিময় করে include fastcgi_paramsএবং এটি সমাধান করেছি fastcgi_param SCRIPT_FILENAME ...

প্রকৃতপক্ষে এনগিনেক্স প্রতিটি ফাস্টসিজিআই প্যারামিটারের সর্বশেষ মান নির্ধারণ করে, সুতরাং আপনাকে ফাস্টকজি_প্যারামগুলিতে অন্তর্ভুক্ত ডিফল্ট মানের পরে নিজের মানটি রাখতে হবে।


1

আমি CentOS7.3 সিস্টেমে সেলিনাক্স বন্ধ করে এই সমস্যার সমাধান করেছি

ধাপ:

  • Exec setenforce 0
  • আপনারও কনফিগার ফাইল পরিবর্তন করতে হবে

vim /etc/selinux/config set SELINUX to disabled


0

আমি আপনার প্রশ্নটি একই ত্রুটি বার্তার সন্ধান করতে পেয়েছি তবে অ্যাপাচি + পিএইচপি-এফপিএম ব্যবহার করেছি (কোনও এনজিনেক্স নেই)। আমার জন্য সমস্যাটি ভুল জায়গায় স্ল্যাশ ছিল: অনেকগুলি সেটআপ পরামর্শগুলিতে ফর্মের একটি লাইন অন্তর্ভুক্ত থাকে:

SetHandler "proxy:unix:/path/to/file.socket|fcgi://localhost/:9000"

পোর্ট নম্বরটি এর পরে শেষ স্ল্যাশ রেখে:

SetHandler "proxy:unix:/path/to/file.socket|fcgi://localhost:9000/"

সমস্যাটি আমার কাছে অদৃশ্য হয়ে গেল। হতে পারে আপনি অনুরূপ কিছু করতে পারেন


0

আমি একই প্রশ্নের সাথে দেখা করি, তবে অন্যান্য পদ্ধতি আমাকে প্রশ্নটি সমাধান করতে সহায়তা করে নি!

আমি এটি সমাধান করেছি, আমি কীটিটি পেয়েছি তা হল: লিনাক্স ব্যবহারকারী ডানদিকে যাচ্ছেন প্রশ্ন: ফাস্টসিজি স্টাডারে প্রেরণ করা হয়েছে: "প্রাথমিক স্ক্রিপ্ট অজানা"

কারণ পিএইচপি-এফপিএম ডিফল্ট ব্যবহারকারী: গোষ্ঠীটি আপাচি: অ্যাপাচি, তবে আপনার কোড দির কিছুটা বডি: কিছুবাডি। সুতরাং আপনার সঠিক ব্যবহারকারী পরিবর্তন করা উচিত!

এই প্রশ্নটি সমাধান করার জন্য আমি একটি ব্লগ লিখি, আপনি এই ব্লগটি দেখতে পারেন:

[এনগিনেক্স ফাস্টসিজিআই স্টাডারে প্রেরণ করা হয়েছে: "প্রাথমিক স্ক্রিপ্ট অজানা"] [1] `[1]: http://geekhades.blogspot.com/2017/06/nginx-fastcgi-sent-in-stderr-primary.html


0

আমি একটি দূরবর্তী সাইট ক্লোন করেছি এবং ইতিমধ্যে বিদ্যমান wp-config.php- এ দূরবর্তী সার্ভারের ডাটাবেস তথ্য ছিল।

আমি আমার স্থানীয় ডাটাবেস তথ্য সহ আমার স্থানীয় ওয়ার্ডপ্রেস কনফিগারেশন সেটআপ করে এই সমস্যাটি সমাধান করেছি।


0

আমি উপরের থেকে সমস্ত কিছু করেছি, 2 ঘন্টা হারিয়েছি আমার মাথা ঘোরানো এবং সমস্যা এখনও অব্যাহত রয়েছে। শেষ পর্যন্ত আমি করেছি:

sudo service php7.0-fpm restart

ও ভায়োলা কাজ করেছে!

বিটিডব্লিউ, আমি লিংক থেকে এনজিনেক্সের সাথে নতুন সিমফনি 3.4 প্রকল্প স্থাপন করছিলাম: https://symfony.com/doc/3.4/setup/web_server_configration.html

এটি ছিল নতুন সিমফনি প্রকল্পের অনুরোধের আমার পঞ্চম সময় এবং আমি বিশ্বাস করতে পারি না যে এই "প্রাথমিক স্ক্রিপ্টটি অজানা" ঘটছে।


0

আপনার পিএইচপি-এফএমপি সোক ফাইলের জন্য অনুমতিগুলি পরীক্ষা করুন, কোনওভাবে এটি অ্যাক্সেসযোগ্য ছিল না:

chmod 755 /usr/local/var/run/php-fpm.sock

তারপরে এনজিনেক্স পুনরায় চালু করার চেষ্টা করুন।


0

আমি এই অদ্ভুত বার্তাটি খুব দীর্ঘ সময় ধরে আটকা পড়েছি। আমি কারণ সম্পর্কে নিশ্চিত নই কারণ সবকিছু কিছুক্ষণ কাজ করেছিল তখন হঠাৎ করে কাজ বন্ধ হয়ে যায়।

আমি মিডিয়াউইকি দ্বারা নির্ধারিত উইকি ইউআরএলগুলি সংক্ষেপিত করছিলাম, লাইটসেলের বিটনামি / এনগিনেক্স সহ।

অনেকগুলি অনুসন্ধান অনুসন্ধান করা এবং পড়া, এটি একটি সম্ভাব্য সমস্ত পরিস্থিতিতে সংক্ষিপ্ত বিবরণ বলে মনে হচ্ছে এবং আমি সেগুলি সব চেষ্টা করেছি:

  • এনগিনেক্স ঠিক আছে, মূল ফোল্ডার পিএইচপি কাজ করছে, সাবফোল্ডারটি নেই
  • 404 + একটি খালি স্ট্রিং "ফাইল পাওয়া যায় নি" হিসাবে নিক্ষেপ করা হয়েছে, এনজিনেক্স দ্বারা নয় error
  • rootসার্ভারে যোগ করুন , কাজ করেনি
  • ফোল্ডার এবং পিএইচপি-এফপিএম / এনগিনেক্সের অনুমতি পরীক্ষা করুন, কোনও সমস্যা মূল এবং সাবফোল্ডার এক নয়
  • ত্রুটি কোড ব্যাখ্যার জন্য পিএইচপি-এফপিএম ম্যানুয়াল পরীক্ষা করুন, একটি খুঁজে পেল না
  • পিএইচপি-এফপিএম অ্যাক্সেস লগ চালু করুন, অনুরোধটি ইউআরআই সঠিক ছিল, তবে 404 ফেরত দেওয়া হয়েছে
  • পিএইচপি-এফপিএম এর জন্য ভার্বোজ / ডিবাগ মোড চালু করার চেষ্টা করুন, কাজ হয়নি, অনুমিত ত্রুটি লগ ফাইলটি সর্বদা খালি থাকে

সুতরাং আমাকে শেষ অবলম্বনটি চেষ্টা করতে হবে, যেহেতু রুট ফোল্ডার পিএইচপি কাজ করছিল এবং সাবফোল্ডারগুলি ছিল না, তবে তাদের মধ্যে কেবলমাত্র rootমূল ফোল্ডারটি ব্যবহার করা হবে $request_filenameএবং সাবফোল্ডার অবস্থানগুলি ব্যবহৃত হয়েছিল $document_rootএবং $fastcgi_script_nameতাই আমি ফোল্ডারগুলির সাথে মেলে সাবফোল্ডার লোকেশন সেটিংস পরিবর্তন করেছি।

তারপরে এটি কাজ করেছে ... আমি এখনও নিশ্চিত নই কেন এটি কাজ করেছে। কারণ আমি যখন পিএইচপি-এফপিএম অ্যাক্সেস লগটি পরীক্ষা করি তখন আমি একই ইউআরআই দেখতে পাই, একজনের 404 এবং অন্যটি 200 ছিল।

এখানে চিত্র বর্ণনা লিখুন

পার্থক্যটি ছিল কনফিগারেশনে। যেহেতু তারা একই আউটপুট উত্পাদন করে, কেন জানি ফলাফল আলাদাভাবে প্রকাশিত হয়েছিল।

যাইহোক আমি এখানে আমার 2 সেন্ট পোস্ট করার সিদ্ধান্ত নিয়েছি, আশা করি এটি সাহায্য করবে।

পিএস: আমি সত্যিই আশা করি যে পিএইচপি আরও ভাল ত্রুটি বার্তা এবং ভার্বোজ মোড সরবরাহ করবে, কারণ সমস্যাটি বিচ্ছিন্ন করতে না পারার এবং ভার্বোজ আউটপুট এবং ডিবাগ তথ্য দেখার কোনও উপায় হ'ল এটি হতাশাজনক।


-1

আপনার পিএইচপি অবস্থানের মধ্যে মূল নির্দেশিকা যুক্ত করার চেষ্টা করুন।

location ~ \.php {
      root /home/willem/git/console/www;
      ...
}

1
rootডিরেক্টিভের প্রতি একটি উপর নির্ধারণ করা উচিত serverভিত্তিতে এবং কোন মধ্যে ব্যবহার করা উচিত নয় locationঅবরোধের (যদি না আপনি একটি প্রো হন এবং আপনার কনফিগারেশন মধ্যে কিছু খুব বিশেষ nginx বাগ পাশকাটিয়ে চান)।
ফ্লেশগ্রিন্ডার

1
@ ফ্লেশগ্রিন্ডার প্রতি সার্ভারে একটি রুট সেরা অনুশীলন নয়।
গ্রেট ক্লোবোন


@ ফ্লেশগ্রিন্ডার আপনি যে অংশটি যুক্ত করেছেন সেটি বলছে না। বিভাগে ভাল অনুশীলনের উদাহরণ rootএকটি locationব্লকের ভিতরে নির্দেশিকা দেখায় ।
ইসিগোইয়া

@ishigoya দয়া করে আবার লিঙ্কটি দেখুন, rootএকাধিক locationব্লকের একাধিক নির্দেশাবলী স্পষ্টভাবে বিএডি শিরোনামের অধীনে।
ফ্লেশগ্রিন্ডার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.