बहुत से उपयोगकर्ता इस धागे में पड़ते हैं कि नग्नेक्स + php-fpm का उपयोग करते हुए रिक्त पृष्ठों के लिए एक समाधान खोजने की अपेक्षा करते हैं , मुझे उनमें से एक है। यह एक पुनरावृत्ति है जो मैंने कई जवाबों को पढ़ने के बाद यहाँ किया है, साथ ही मेरी अपनी जाँच (php7.2 पर अद्यतन):
1) /etc/php/7.2/fpm/pool.d/www.conf
पैरामीटर के मूल्य को खोलें और जांचें listen
।
listen = /var/run/php/php7.2-fpm.sock
2) पैरामीटर listen
को fastcgi_pass
आपकी साइट कॉन्फ़िगरेशन फ़ाइल (i, e:) में पैरामीटर से मेल खाना चाहिए /etc/nginx/sites-enabled/default
।
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
3) वास्तव में मौजूद फ़ाइल की जाँच करें:
$ file /var/run/php/php7.2-fpm.sock
/var/run/php/php7.2-fpm.sock: socket
4) अगर इसका मतलब यह नहीं है कि php7.2-fpm नहीं चल रहा है, तो आपको इसे पुनः आरंभ करने की आवश्यकता है:
$ sudo /etc/init.d/php7.2-fpm restart
[ ok ] Restarting php7.2-fpm (via systemctl): php7.2-fpm.service.
इस location
अनुभाग के संबंध में /etc/nginx/sites-enabled/default
:
# pass PHP scripts to FastCGI server
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
}
snippets/fastcgi-php.conf
स्थान पर मौजूद फ़ाइल की जाँच करें /etc/nginx/
:
$ file /etc/nginx/snippets/fastcgi-php.conf
/etc/nginx/snippets/fastcgi-php.conf: ASCII text
इस फ़ाइल में php7.2-fpm द्वारा आवश्यक चर परिभाषाओं की एक सूची है। चर सीधे या एक अलग फ़ाइल के शामिल के माध्यम से परिभाषित कर रहे हैं।
include fastcgi.conf;
यह फ़ाइल यहां स्थित है /etc/nginx/fastcgi.conf
और ऐसा दिखता है:
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
...
fastcgi_param REDIRECT_STATUS 200;
nginx में दो संभावित पैरामीटर फाइलें शामिल हैं: fastcgi_params और fastcgi.conf । दोनों के बीच का अंतर चर की परिभाषा है SCRIPT_FILENAME
:
$ diff fastcgi_params fastcgi.conf
1a2
> fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
एक लंबी कहानी को छोटा करने के लिए, fastcgi.conf को हमेशा काम करना चाहिए। यदि किसी कारण से आप सेट हो रहे हैं तो fastcgi_params का उपयोग कर रहे हैं , आपको परिभाषित करना चाहिए SCRIPT_FILENAME
:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
अब nginx कॉन्फ़िगरेशन पुनः लोड करें:
$ sudo nginx -s reload
और एक php फ़ाइल को सही ढंग से प्रदर्शित किया गया है। उदाहरण के लिए:
/var/www/html/test.php
<pre><?php var_export($_SERVER)?></pre>
/var/www/html
दस्तावेज़ रूट का पथ कहाँ है
यदि इन सब के बावजूद, आप अभी भी एक रिक्त फ़ाइल देख रहे हैं, तो सुनिश्चित करें कि आपके php.ini
द्वारा short_open_tag
सक्षम किया गया है (यदि आप छोटे टैग के साथ PHP पृष्ठ का परीक्षण कर रहे हैं)।