ฉันจะทราบได้อย่างไรว่าเหตุใด php5-fpm ของฉันจึงไม่สามารถเริ่มต้นได้


10

ฉันได้รับการหมดเวลาเกตเวย์ 504 เมื่อฉันพยายามเข้าถึงเซิร์ฟเวอร์ของฉันตรวจสอบขนาดเล็กไม่พบบันทึกใด ๆ ในบันทึก php5-fpm แต่เพียงเพื่อให้แน่ใจว่าฉันพยายามเริ่มต้นใหม่ เมื่อฉันพยายามรีสตาร์ท:

sudo service php5-fpm restart

ฉันได้รับ[fail] แต่เมื่อฉันทำ

sudo service php5-fpm stop
sudo service php5-fpm start

ฉันไม่มีข้อผิดพลาด

ฉันจะตรวจสอบได้อย่างไรหากไม่มีบันทึก ฉันจะทำอย่างไร

คำตอบ:


17

คุณตรวจสอบไฟล์error_logของคุณสำหรับphp-fpmหรือไม่ ตำแหน่งของไฟล์นั้นควรจะประกาศในphp-fpm.confของคุณ(ใน Ubuntu config คือ /etc/php5/fpm/php-fpm.conf, ไฟล์บันทึกคือ / var / log / php5-fpm / log), ตรวจสอบด้วยlog_levelถ้าถูกปิดใช้งาน (; log_level) โปรดเปิดใช้งานและเปลี่ยนไปที่การแก้ปัญหา หลังจากนั้นลองเริ่มบริการ php5-fpm และตรวจสอบบันทึกของคุณ

คุณสามารถลองรัน php5-fpm ในโหมดพื้นหน้า:

# php5-fpm -y /etc/php5/fpm/php-fpm.conf

บางทีนี่อาจแสดงบางสิ่งที่น่าสนใจ


1
ในกรณีของฉันคำสั่งนี้เริ่ม php5-fpm ในขณะที่service php5-fpm startไม่ได้ ขอบคุณ!
David Thomas

เดวิสดูเหมือนว่าจะทำงานให้ฉัน +1! แต่ .. ที่ติดขัดให้ฉันแก้ปัญหาฉันพบข้อผิดพลาด +1! ขอบคุณทุกคน!
Tenaciousd93

หากคุณเริ่มต้น FPM โดยใช้งานเริ่มต้นระบบไฟล์บันทึกการเริ่มต้น php-fpm จะถูกเขียนลงใน / var / log / upstart /
Ashwin Date

สำหรับ php7.0 ให้ใช้php-fpm7.0 -F -c /etc/php/7.0/fpm/php-fpm.conf
Yadvendar

4

ขั้นตอนการแก้ไขปัญหามาตรฐาน:

  • ตรวจสอบไฟล์บันทึก หากคุณไม่รู้ว่ามันอยู่ที่ไหนตรวจสอบการตั้งค่าหรือเพื่อหา pid หาบางอย่างps aux | grep php-fpmแล้วทำlsof -p $PID | grep log(ละเว้น grep ถ้ามันแสดงให้เห็นอะไร)
  • 99% ของไฟล์บันทึกเวลาจะแสดงสาเหตุของปัญหา หากไม่ใช่ให้ค้นหาระดับการบันทึกในการกำหนดค่ายกระดับแล้วลองอีกครั้ง
  • อาจจะหยุดทำงานทันทีและคุณไม่สามารถรับ PID เพื่อตรวจสอบกระบวนการได้ คุณสามารถลองเริ่มกระบวนการในเบื้องหน้า แต่นี่หมายถึงการหาสวิตช์บรรทัดคำสั่งที่คุณต้องการใช้ โดยปกติคุณเพียงแค่ต้องชี้ไปที่การกำหนดค่าปัจจุบันของคุณ
  • หากไม่มีไฟล์บันทึกการทำงานหรือ stdout / stderr (การแสดงผลเบื้องหน้า) มีการรวมเบาะแสใด ๆ ก็ถึงเวลาสำหรับ strace ... แต่นั่นเป็นอีกโพสต์

+1 วิธีที่ดีในการค้นหาไฟล์บันทึก!
deweydb

3

บันทึกนี้ช่วยฉันได้ที่: https://bugs.launchpad.net/nginx/+bug/1366651

ในกรณีของฉันการอัปเดตเป็น nginx> 1.6.1 พารามิเตอร์ที่ส่งผ่านไปยัง php5-fpm ตั้งอยู่ใน fastcgi.conf แทนที่จะเป็นใน fastcgi_params ทำให้ PHP ที่ส่งคืน 200 (ok) เสมอ แต่ไม่มีเนื้อหาใด ๆ เพราะ SCRIPT_FILENAME ไม่ได้ตั้งค่าอีกต่อไป

ฉันหวังว่ามันจะช่วยคนอื่นด้วย


2

สำหรับฉันปัญหาคือphp-fpm.confไฟล์ของฉันไม่ได้ใช้ชื่อไฟล์กำหนดค่าเริ่มต้น - มันมีชื่อว่า/etc/php5/fpm/php5-fpm.conf( php5-fpm.confvs php-fpm.conf)

php5-fpm -t  

[26-Jul-2014 22:39:16] ERROR: failed to open configuration file '/etc/php5/fpm/php-fpm.conf': No such file or directory (2)
[26-Jul-2014 22:39:16] ERROR: failed to load configuration file '/etc/php5/fpm/php-fpm.conf'
[26-Jul-2014 22:39:16] ERROR: FPM initialization failed

ฉันเปลี่ยนชื่อไฟล์ conf เป็นphp-fpm.confและแก้ไขปัญหาได้

sudo mv /etc/php5/fpm/php5-fpm.conf /etc/php5/fpm/php-fpm.conf
sudo service php5-fpm restart
 * Restarting PHP5 FastCGI Process Manager php5-fpm                                                                           [ OK ]

0

ฉันประสบปัญหานี้เมื่อไม่มีไฟล์บันทึกแล้วสังเกตว่าฉันเข้าถึง URL ผ่าน HTTPS แทน HTTP และโปรโตคอลนั้นไม่ได้ตั้งค่าไว้ใน Nginx ดังนั้น PHP5-FPM จึงไม่ได้รับการรับส่งข้อมูล

อาจช่วยใครซักคน


0

อาจเกิดขึ้นได้ว่าในการอัพเกรดอูบุนตูจะทำการถอนการติดตั้งแพ็คเกจ php5-fpm เนื่องจาก php 7 ใช้ php-fpm แทน ลองใช้สิ่งนี้บนคอนโซล:

php5-fpm

หากไม่มีอยู่คุณอาจใช้ php 7 อยู่แล้วให้ติดตั้ง

apt-get install php-fpm

ซึ่งจะติดตั้งเวอร์ชัน php7

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.