সেগফল্টিংয়ের সময় কীভাবে অ্যাপাচি থেকে কোর ডাম্প পাবেন


13

যখন সেগফল্ট তৈরি করা হচ্ছে তখন অ্যাপাচি থেকে কোর ডাম্প কীভাবে পাবেন সে সম্পর্কে আমি অনলাইনে অনেক লোকেশনের নির্দেশনা অনুসরণ করেছি, তবে এটি এখনও ডাম্প তৈরি করতে অস্বীকার করেছে।

আমার আছে:

  1. ফাইলটিতে CoreDumpDirectoryনির্দেশিকা যুক্ত করে httpd.confসেট করে/tmp
  2. নিষ্পন্ন ulimit -c unlimited
  3. ডাম্প ব্যবহারের জন্য প্যাটার্ন সরবরাহ করেছেন echo '/tmp/core-%e.%p' > /proc/sys/kernel/core_pattern
  4. দৌড়েও গেছে echo 0 > /proc/sys/kernel/core_uses_pid

এইচটিটিপিডি পুনরায় চালু করা হয়েছে তবে এখনও কোনও ডাম্প তৈরি হয়নি।

আমি CentOS 5.8 x64 এর সাথে httpd-2.2.3-65.el5.centos.3এবং চালাচ্ছিphp-5.3.20-13.el5.art

কোন সাহায্যের অনেক প্রশংসা হবে!


কোরেডাম্পডাইরেক্টরি নির্দেশিকায় আপনি যে ফাইলটি লিখেছেন তাতে অ্যাপাচে কি লেখার কোনও অনুমতি আছে? এটি অ্যাপাচে মালিকানাধীন উচিত।
ভ্যালেন্টাইন বজরামি

আমি এটি / টেম্পে সেট করে রেখেছি যা সর্বজনীনভাবে
লেখার যোগ্য

ধন্যবাদ - এটি একটি ডাম্প উত্পাদন করেছিল, তবে আমি যে জায়গাটি সেট করেছি সেখানে নয়! আমি সেট CoreDumpDirectoryকরতে /tmp/dumpsএবং এটি ডাম্প /tmpসঙ্গে ডিবাগিং ... এখন
chrismcb

ভাগ্যিশ তুমি বুঝতে পেরেছ!
ভ্যালেন্টিন বজরামি

উত্তর:


7

আমার উত্তরটি হ'ল:

  1. নির্দেশ অনুসরণ করুন নিম্নলিখিত হিসাবে

    CoreDumpDirectory /tmp/mycoredump

  2. ডিরেক্টরি তৈরি করুন:

    mkdir -p /tmp/mycoredump

  3. ডিরেক্টরি www-ডেটা বা httpd ডিরেক্টরিতে মালিকানা অর্পণ করুন

    chown -R www-data:www-data /tmp/mycoredump

  4. এতে অনুমতি সেট করুন:

    chmod 777 /tmp/mycoredump

  5. অ্যাপাচি পুনরায় চালু করুন:

    service apache2 restart


হ্যাঁ, আমি এটি প্রায় করেছি, তবে এটি /tmpযাইহোক ডাম্পিংয়ের মধ্যে শেষ হয়েছিল !
chrismcb

6
এটি কোনও chmod 777কিছুর জন্য কখনই ভাল ধারণা নয়
19-104

1
@sendmoreinfo তবে যদি আপনার ব্যবহারের কেস বাইরের বিশ্বের জন্য কিছু সংশোধনযোগ্য এবং কার্যকর করার জন্য তৈরি করে? ;-)

8
আপনাকে নিজেকে পায়ে গুলি করার অনুমতি দেওয়া হয়েছে, কেবল এটি প্রচার করবেন না।
সেন্ডমোরইনফো

0

মনে রাখবেন যে আপনি যদি PrivateTmp=trueনিজের /usr/lib/systemd/system/apache2.service(বা এটি আপনার সিস্টেমে যা কিছু বলা হয়) সেট করে রেখেছেন, যার অর্থ আপাচি আসলে /tmpএমন কিছু অভ্যন্তরের সন্ধান করে /tmp/systemd-private-c27fc5b152d546159d675e170641529b-apache2.service-IcEt0m/, আপাচি সেই দিরের কাছে লিখতে সক্ষম হবে না এবং আপনি কোনওরকম কোর ফেলে দেবেন না (যথাযথভাবে থেকে systemdtmp ডিরেক্টরিতে 700 রুট শুধুমাত্র perms থাকার)।

সমাধানটি হ'ল PrivateTmp=falseসার্ভার শুরুর পরে সিস্টেমড টিএমপি ডিরেক্টরিটির অনুমতি সেট বা সংশোধন করা।

আমি এর জন্য কয়েক ঘন্টা নষ্ট করেছি কেবলমাত্র অবশেষে বুঝতে পারি সমস্যাটি কী।

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