পিএইচপি-এফপিএম ত্রুটি লগতে লিখেন না


161

আমি সবেমাত্র একটি nginx + php-fpm সার্ভার ইনস্টল করেছি। পিএইচপি-এফপিএম কখনও তার লগতে ত্রুটি লেখেনা বাদে সবকিছু ঠিক আছে বলে মনে হয়।

fpm.conf

[default]
listen = /var/run/php-fpm/default.sock
listen.allowed_clients = 127.0.0.1
listen.owner = webusr
listen.group = webusr
listen.mode = 0666
user = webusr
group = webusr
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.status_path = /php/fpm/status
ping.path = /php/fpm/ping
request_terminate_timeout = 30s
request_slowlog_timeout = 10s
slowlog = /var/log/php-fpm/default/slow.log
chroot = /var/www/sites/webusr
catch_workers_output = yes
env[HOSTNAME] = mapsvr.mapking.com
php_flag[display_errors] = on
php_admin_value[error_log] = /var/log/php-fpm/default/error.log
php_admin_flag[log_errors] = on

nginx.conf

server
{
  listen        80 default_server;
  server_name   _;

  charset       utf-8;
  access_log    /var/log/nginx/access.log rest;

  include       conf.d/drops.conf.inc;

  location      /
  {
    root        /var/www/sites/webusr/htdocs;
    index       index.html index.htm index.php;
  }

  # pass the PHP scripts to FastCGI server listening on socket
  #
  location      ~ \.php$
  {
    root           /var/www/sites/webusr/htdocs;
    include        /etc/nginx/fastcgi_params;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME /htdocs/$fastcgi_script_name;
    if (-f $request_filename)
    {
      fastcgi_pass   unix:/var/run/php-fpm/default.sock;
    }
  }

  location      = /php/fpm/status
  {
    include        /etc/nginx/fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass   unix:/var/run/php-fpm/default.sock;
  }

  location      = /php/fpm/ping
  {
    include        /etc/nginx/fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass   unix:/var/run/php-fpm/default.sock;
  }

  # 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;
  }
}

আমি একটি ভুল পিএইচপি স্ক্রিপ্ট তৈরি করেছি এবং রান করেছি এবং ওয়েব ব্রাউজারে ত্রুটি আউটপুট দেখতে পাচ্ছি। এছাড়াও nginx ত্রুটি লগ একই বার্তা সহ এফএম থেকে stderr আউটপুট। আমি নির্ধারিত লগ ফোল্ডারে ব্যবহারকারীর লেখার অনুমতি রয়েছে (আমি এমনকি 777 চেষ্টা করেছি) তা পরীক্ষা করে দেখেছি। এমনকি নিযুক্ত ত্রুটিযুক্ত.লগ ফাইলটি পিএইচপি-এফএমপি সাফল্যের সাথে তৈরি করা হয়েছে। যাইহোক, লগ ফাইলটি সর্বদা খালি থাকে, পিএইচপি স্ক্রিপ্ট থেকে আপত্তিজনক ত্রুটি ঘটেনি তা বিবেচনা করুন।

কি হচ্ছে?

[কারণ বেশ কিছুক্ষণ পরে খুঁজে পেয়েছেন]

এটা অনুমতি ছিল। সাইটের ব্যবহারকারীদের সমস্যার সমাধান করাতে মালিককে পরিবর্তন করা হয়েছে।


এটি উল্লেখ করার মতো বিষয় যে সমস্যাযুক্ত পিএইচপি সংস্করণটি v5.3.9 এবং v5.3.14 (আজ অবধি) এর মধ্যে রয়েছে। এটি v5.3.15 এবং v5.4.5 থেকে শুরু করে কাজ করা উচিত।
আন্তন বাবেঙ্কো

যদি আপনি hhvm + পিএইচপি-এফপিএম হোমস্ট্যান্ডের সাথে ব্যবহার করে থাকেন তবে লগটি লেজ /var/log/hhvm/error.log এ রয়েছে
অ্যাস্ট্রোয়ানু

এখানেও একই সমস্যা। দেখে মনে হচ্ছে অ্যাক্সেস এবং ধীর লগের জন্য পৃথক অনুমতি প্রয়োজন, এইভাবে ফোল্ডারটি মূল -৫৫৫ দিয়ে তৈরি করা হয়েছে।
scones

উত্তর:


190

এটি আমার পক্ষে কাজ করেছে:

; Redirect worker stdout and stderr into main error log. If not set, stdout and
; stderr will be redirected to /dev/null according to FastCGI specs.
; Default Value: no
catch_workers_output = yes

সম্পাদনা:

সম্পাদনা করার ফাইলটি এমন ফাইল যা আপনার পছন্দসই পুলটি কনফিগার করে। ডিফল্টরূপে এটি: /etc/php-fpm.d/www.conf


5
<স্ট্রাইক> কোন কনফিগ ফাইলে? php.ini? পিএইচপি-fpm.conf? </ ধর্মঘট>। আমি আমার/etc/php-fpm.d/www.conf
সুইভেল

16
উবুন্টু 14 এই ফাইলটিকে /etc/php5/fpm/pool.d/www.conf এ অবস্থিত
গিলবার্তো আলবিনো

2
আমার মনে হয় তখন প্রশ্নটি কোথায় এই অধরা "প্রধান ত্রুটি লগ" আছে ... ওহ, আমি দেখতে পাচ্ছি, এটি php_admin_value[error_log]একই কনফিগার ফাইলে - /var/log/php-fpm/www-error.log এর CentOS 7 এ মূল্য রয়েছে উদাহরণস্বরূপ
ব্র্যাড পিয়াবডি

7
sudo vi /etc/php/7.0/fpm/pool.d/www.confআমার জন্য
কলিন অ্যান্ডারসন

এটি আমার জন্য সঠিক পথ ছিল, ডেবিয়ান 9.1 এবং পিএইচপি-এফপিএম 7.0
অ্যান্টওয়েন

79

আমার পিএইচপি-এফএমপি লগগুলি লিখিত হওয়ার আগে এটির সাথে আমি দীর্ঘ সময় ধরে লড়াই করেছি /var/log/upstart/php5-fpm.log। এটি আপস্টার্ট এবং পিএইচপি-এফপিএম কীভাবে ইন্টারঅ্যাক্ট করে তার মধ্যে একটি বাগ হিসাবে উপস্থিত হয়। এখানে আরও দেখুন: https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1319595


11
ধন্যবাদ !! এটি আমার জন্য মূল বিষয় ছিল। আমি দুটি ফাইল সিলেকিং শেষ করেছি কারণ আমি জানি যে আমি এটি পরে মনে করতে পারব না:ln -sf /var/log/upstart/php5-fpm.log /var/log/php5-fpm.log
njbair

পিএইচপি এত বিভ্রান্ত ... একটি প্রাক-তৈরি /var/log/php7.0-fpm.logতাই আছে, php_admin_value[error_log] = /var/log/fpm-php.www.logঅ-মানক লগ পুনর্নির্দেশ করা হবে ??
পিটার ক্রাউস

53

আমারও অনুরূপ সমস্যা ছিল এবং pool.d/www.confফাইলটি নিম্নলিখিত ক্ষেত্রে করতে হয়েছিল

php_admin_value[error_log] = /var/log/fpm-php.www.log
php_admin_flag[log_errors] = on

এটি এখনও লগ ফাইলটি লিখছিল না তাই touch /var/log/fpm-php.www.logসঠিক মালিককে সেট করেই আমাকে আসলে এটি তৈরি করতে হয়েছিল sudo chown www-data:www-data /var/log/fpm-php.www.log

একবার এটি হয়ে গেলে, এবং php5-fpm পুনরায় শুরু হয়, লগিং আবার শুরু হয়েছিল।


আসলে ঘটনাটি ছিল! এমনকি ত্রুটির পরে ডানদিকে আমার আরও কিছু কন্টেন্ট উপস্থিত হয়েছিল :)
হোমস

এই জন্য অনেক ধন্যবাদ! এটি উবুন্টু 14.04.1 (জেসি) এ আমার জন্য সমাধান ছিল, যদি এটি অন্য কাউকে সহায়তা করে।
উইলিয়াম তারেল

কোনও যোনি / ডিবিয়ান হুইজি পরিবেশে কিছু সমস্যা।
Xosofox

অন্যান্য পাথ, যেমন / var / লগ / যেখানে কেবল সময়ের অপচয় হয়।
পেড্রো গেস

1
কেন ?! এটি এখনও fpm-php7 এ সমস্যা।
ব্যবহারকারী1634074

31

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

/etc/php(version)?/fpm/pool.d/www.conf

লাইন যে uncomment বলে যে:

catch_workers_output

এটি পিএইচপিগুলি স্টাডারকে / dev / নালের পরিবর্তে পিএইচপি-এফপিএম এর ত্রুটি লগতে যেতে দেয়।


2
যারা ডকার ব্যবহার করছেন তাদের জন্য আপনার কনফিগারেশন ফাইলগুলি অবস্থিত:/usr/local/etc/php-fpm.d/
এডওয়ার্ড

এই কনফারেন্সের সাথে, লগটি কোথায়, এ- /var/log/php7.0-fpm.log/var/log/fpm-php.www.logবা অন্য যায়?
পিটার ক্রাউস

এটি কোথায় লগ ইন?
ভিক্টর জোরাস

26

আমি এখানে অনেকগুলি উত্তর থেকে অন্তর্দৃষ্টি সংগ্রহ করেছি এবং আমি একটি বিস্তৃত সমাধান উপস্থাপন করছি:

সুতরাং, আপনি যদি php5-fpm দিয়ে nginx সেটআপ করেন এবং কোনও বার্তা ব্যবহার করে লগ করেন তবে error_log()আপনি এটি /var/log/nginx/error.logডিফল্টরূপে দেখতে পারেন ।

আপনি যদি প্রচুর ডেটা (একটি অ্যারে বলুন) ব্যবহার করে লগ ইন করতে চান তবে একটি সমস্যা দেখা দিতে পারে error_log(print_r($myArr, true));। যদি অ্যারে যথেষ্ট বড় হয় তবে মনে হয় এটি nginxআপনার লগ এন্ট্রি কেটে দেবে।

এটি পেতে আপনি লগগুলি পরিচালনা করতে fpm( php.net fpm কনফিগারেশন ) কনফিগার করতে পারেন । এটি করার পদক্ষেপ এখানে।

  1. খোলা /etc/php5/fpm/pool.d/www.conf:

    $ sudo nano /etc/php5/fpm/pool.d/www.conf

  2. লাইনের ;শুরুতে অপসারণ করে নিম্নলিখিত দুটি লাইন মন্তব্য করুন : (ত্রুটি_লগটি এখানে সংজ্ঞায়িত করা হয়েছে: php.net )

    ;php_admin_value[error_log] = /var/log/fpm-php.www.log ;php_admin_flag[log_errors] = on

  3. তৈরি করুন /var/log/fpm-php.www.log:

    $ sudo touch /var/log/fpm-php.www.log;

  4. এর মালিকানা পরিবর্তন করুন /var/log/fpm-php.www.logযাতে পিএইচপি 5-এফপিএম এটি সম্পাদনা করতে পারে:

    $ sudo chown vagrant /var/log/fpm-php.www.log

    দ্রষ্টব্য: vagrantএমন এক ব্যবহারকারী যা আমাকে মালিকানা দিতে হবে $ ps aux | grep php.*wwwপ্রথম কলামটি চালিয়ে এবং দেখে আপনি দেখতে পাচ্ছেন যে এটির ব্যবহারকারীর জন্য আপনার কী হওয়া উচিত ।

  5. পিএইচপি 5-এফপিএম পুনরায় চালু করুন:

    $ sudo service php5-fpm restart

এখন আপনার লগগুলি হবে /var/log/fpm-php.www.log


আমি এটি চেষ্টা করেছিলাম, তবুও "fpm-php.www.log" খালি আছে। কোন ধারণা?
সুধরশন নায়ার

আপনার মুদ্রণ করুন phpinfo()এবং দেখুন যে এই সেটিংসটি আসলে উত্সাহিত হয়েছে কিনা, @ সুদর্শন নায়ার।
গিজিম

@Gezim। আপনার উত্তর দেওয়ার জন্য ধন্যবাদ. আমার ত্রুটি লগ পাথ হয় /var/log/fpm-php.www.log। তবুও এই ফাইলটি খালি
সুদর্শন নায়ার

@ সুদর্শন নায়ার, যদি log_errorsত্রুটিগুলি চালু করা হয় তবে কেবলমাত্র ফাইলটির অনুমতি এবং মালিকানা হ'ল পরীক্ষা (দ্বিতীয় ধাপ)।
গিজিম 29:58

@Gezim। আমি 777 অনুমতি এবং মালিকানা হিসাবে দিয়েছি www-data:www-data, এখনও ভাগ্য নেই। কোন ধারণা ?
সুদর্শন নায়ার

14

V5.3.9 থেকে এখন অবধি (5.3.14 এবং 5.4.4) পিএইচপি-এফএম-তে একটি https://bugs.php.net/bug.php?id=61045 রয়েছে is বিকাশকারী প্রতিশ্রুতিবদ্ধ ফিক্স পরবর্তী প্রকাশে লাইভ হবে go আপনি যদি অপেক্ষা করতে না চান - সেই পৃষ্ঠায় প্যাচ ব্যবহার করুন এবং পুনর্নির্মাণ করুন বা 5.3.8 এ রোলব্যাক করুন।


4

আপনার fpm.conf ফাইলে আপনি 2 টি ভেরিয়েবল সেট করেন নি যা কেবল ত্রুটি লগিংয়ের জন্য।

ভেরিয়েবলগুলি হ'ল error_log(আপনার ত্রুটি লগ ফাইলের ফাইল পাথ) এবং log_level(ত্রুটি লগিং স্তর)।

; Error log file
; Note: the default prefix is /usr/local/php/var
; Default Value: log/php-fpm.log

error_log = log/php-fpm.log

; Log level
; Possible Values: alert, error, warning, notice, debug
; Default Value: notice

log_level = notice

/usr/local/var/phpপরিবর্তে ডিফল্ট না /usr/local/php/var? শুধু অনুমান করা।
n611x007

2

আমার ক্ষেত্রে আমি দেখাব যে ত্রুটি লগটি /var/log/php-fpm/www-error.log এ চলেছিল । সুতরাং আমি /etc/php-fpm.d/www.conf এ এই লাইনটি মন্তব্য করেছি

php_flag[display_errors]   is commented
php_flag[display_errors] = on  log will be at /var/log/php-fpm/www-error.log

এবং উপরে যেমন বলা হয়েছে আমি এই লাইনটিও uncommented

catch_workers_output = yes

এখন আমি nginx দ্বারা নির্দিষ্ট করা ফাইলটিতে লগগুলি দেখতে পাচ্ছি।


0

আমি বিদ্যমান উত্তরের সাথে অন্য টিপ যোগ করতে চাই কারণ তারা আমার সমস্যার সমাধান করেনি।

আপনার পিএইচপি লোকেশন ব্লকে নিম্নলিখিত nginx নির্দেশিকা দেখুন:

fastcgi_intercept_errors on;

এই লাইনটি সরিয়ে ফেলার ফলে বহু ঘন্টা লড়াই এবং চুল টানা শেষ হয়েছে।

এটি /etc/nginx/default.d/php.confআমার ফেডোরার মতো কিছু অন্তর্ভুক্ত কনফার্ট ডিরেক্টরিতে লুকানো থাকতে পারে ।


-1

আমার ক্ষেত্রে পিএইচপি-এফপিএম পিএইচপি-মাইএসকিএল মডিউল হারিয়ে যাওয়ার কারণে কোনও লগইন ছাড়াই 500 ত্রুটি আউটপুট করে। আমি জুমলা ইনস্টলেশন অন্য সার্ভারে স্থানান্তরিত করেছি এবং এটি সম্পর্কে ভুলে গেছি। সুতরাং apt-get install php-mysqlএবং পরিষেবা পুনঃসূচনা এটি সমাধান করে।

আমি সাফল্য ছাড়াই ভাঙ্গা লগিং ঠিক করার চেষ্টা দিয়ে শুরু করেছি। অবশেষে straceআমি ডিবি সম্পর্কিত সিস্টেম কল করার পরে ব্যর্থ বার্তা পেয়েছি। যদিও আমার মামলাটি অপের প্রশ্নের সাথে সরাসরি সম্পর্কিত নয় তবে আমি আশা করি এটি কার্যকর হতে পারে।


-4

"পিএইচপি-এফপিএম" এর মালিক ডিরেক্টরিটি পরীক্ষা করুন

আপনি করতে পারেন:

ls -lah /var/log/php-fpm/
chown -R webusr:webusr /var/log/php-fpm/
chmod -R 777 /var/log/php-fpm/

5
কখনই / var / log / php-fpm 77 to7 তে সেট করবেন না, আপনি কেবল আপনার সার্ভারকে একটি সিলিমিংক আক্রমণে ঝুঁকিপূর্ণ করেছেন (যদি আরও খারাপ না হয়)
লুকা গিবেলি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.