মৃত্যুর হোয়াইট স্ক্রিন: মারাত্মক ত্রুটি: এক্স বাইটের মেমরি মাপের মাপ শেষ


21

আমার ড্রুপাল ইনস্টলেশনটি নিয়ে আমার একটি সমস্যা রয়েছে, উদাহরণস্বরূপ:

  • আমি যখন মডিউলগুলি সক্ষম বা অক্ষম করি তখন এটি আমাকে একটি খালি পৃষ্ঠায় পুনঃনির্দেশ করে,
  • যখন আমি একটি নতুন বিষয়বস্তু তৈরি করি এবং এটি সংরক্ষণ করি, আমাকে ফাঁকা পৃষ্ঠাতে পুনঃনির্দেশ করে,
  • যখন আমি একটি নতুন ভিউ যুক্ত করি এবং এটি সংরক্ষণ করি, এটি আমাকে একটি ফাঁকা পৃষ্ঠাতে পুনঃনির্দেশ করে,
  • আমি যখন ক্যাশে সাফ করার চেষ্টা করি তখন এটি আমাকে একটি খালি পৃষ্ঠায় পুনঃনির্দেশ করে,
  • বা অনুরূপ ক্ষেত্রে।

মূলত সমস্ত নিশ্চিতকরণ পৃষ্ঠাগুলি আমাকে একটি সাদা স্ক্রিনে পুনর্নির্দেশ করে। আমি যখন এটি আবার রিফ্রেশ করি তখন এটি পৃষ্ঠাটি দেখায়। আমি পিএইচপি মেমরির মান বাড়ানোর চেষ্টা করেছি কিন্তু এটি কোনও লাভ করে না।

এর জন্য অন্য কোনও সমাধান আছে কি?

আমার যে ত্রুটি হচ্ছে

মারাত্মক ত্রুটি: সাইট / সমস্ত / মডিউল / ভিউ / প্লাগিন / ভিউ_প্লুগিন_লোক্যালাইজেশন_নোন.আইঙ্কে লাইন 1 এ 100663296 বাইট অবসন্ন (8192 বাইট বরাদ্দ করার চেষ্টা করা হয়েছে) এর মেমরি আকারের মাপ


2
সর্বদা ত্রুটিযুক্ত লগগুলি পরীক্ষা করুন, এটিতে প্রয়োজনীয় সমস্ত তথ্য থাকবে। আপনার মেমরিটি শেষ হয়ে যাওয়ার মতো শোনাচ্ছে। ড্রুপাল 7 এর 32MB এর বেশি প্রয়োজন যা অনেক হোস্ট প্রোভাইডার এটিকে ডিফল্ট হিসাবে সেট করে।
গুডএসপিএনপি

উত্তর:


20

আমি জানি এটি দেরিতে হতে পারে তবে এটি আমাকে সাহায্য করেছিল। বেশিরভাগ সময় কোনও মডিউল ডাব্লুএসওএডের কারণ হয়ে যায়, আমি কেবল এটির পরীক্ষা করার জন্য মডিউলগুলি অক্ষম করতে পারি না, যেহেতু আমি প্রক্রিয়াটিতে ডেটা হারাতে পারি। আমি যা করেছি তা হ'ল module.incমূল includesডিরেক্টরিতে এই ফাংশনটি সাময়িকভাবে সম্পাদনা করা

function module_invoke_all($hook) {
  $args = func_get_args();
  // Remove $hook from the arguments.
  unset($args[0]);
  $return = array();
  foreach (module_implements($hook) as $module) {

        print "Starting loading $module <br />";

        $function = $module . '_' . $hook;
        if (function_exists($function)) {
          $result = call_user_func_array($function, $args);
          if (isset($result) && is_array($result)) {
            $return = array_merge_recursive($return, $result);
          }
          elseif (isset($result)) {
            $return[] = $result;
          }
        }

        print "Finished loading $module <br />";

  }

  return $return;
}

এবং আমি উপরের কোডটিতে সেই দুটি মুদ্রণ বিবরণী যুক্ত করেছি, তারপরে পৃষ্ঠাটি রিফ্রেশ করুন, যে মডিউলটি "ফিনিশ লোডিং $ মডিউল" বিবৃতিতে পৌঁছায়নি সেটাই সমস্যাটি হ'ল ... এটি আমার ক্ষেত্রে উন্নত ছিল।

মডিউলটি সন্ধান করার পরে, আপনি সিস্টেম সারণিতে যেতে পারেন এবং সেই মডিউলটি সন্ধান করতে পারেন, এটির স্থিতি = 0 এবং বুটস্ট্র্যাপ = 0 নির্ধারণ করতে পারেন বা ক্যোয়ারী চালাতে পারেন:

UPDATE system SET status = 0, bootstrap = 0 WHERE name = 'module_name' LIMIT 1

তথ্যসূত্র: ডিবাগিং ড্রুপাল হোয়াইট স্ক্রিন অফ ডেথ (ডাব্লুএসওডি)


1
মডিউল_আইভোকে_ সমস্ততে মুদ্রণ বিবরণী যুক্ত করা আমাকে দ্রুত আপত্তিজনক মডিউলটি সন্ধান করার অনুমতি দেয়। তারপরে আমি এটিকে অক্ষম করতে ড্রশ ব্যবহার করেছি। কী জীবন রক্ষাকারী!
ড্যান

আপনাকে স্বাগতম ড্যানিমিগস আমি আমার ব্লগের ক্লিভারলজিক . net ঠিক করতে কেবল আজই এই পদ্ধতিটি ব্যবহার করেছি । হয়তো আমি, এই একটি নিবন্ধ লেখা উচিত Cuz আমি নিশ্চিত WSOD সংশোধন পেতে চেষ্টা অনেক সেই জমি বিক্রি করার পড়তে হয়নি কি
জশুয়া Kissoon

11

আপনার index.phpফাইলটিতে এই কোডটি আটকান । এটি আপনাকে ফাঁকা পৃষ্ঠার পরিবর্তে ত্রুটি বার্তাটি দেখায়। কমপক্ষে সমস্যার মূল জানা যাবে। পিএইচপি ট্যাগের ঠিক পরে এটি আটকান।

    error_reporting(E_ALL);
    ini_set('display_errors', TRUE);
    ini_set('display_startup_errors', TRUE);

আশা করি এটি আপনাকে পথ দেখিয়ে দেবে!

http://drupal.org/node/158043


1
এটি কার্যকর হয়নি, গতকাল চেষ্টা করেছিলাম ত্রুটিগুলি দেখার জন্য, তবে এটি কোনও মুদ্রণ করে না
জয়রাম

3
আপনি নিজের ত্রুটি লগ চেক করেছেন? আপনি লিনাক্স Apache চলমান থাকেন, তবে টার্মিনালে এই কমান্ড ব্যবহার করে দেখুন: tail /var/log/apache2/error.log। এটি আপনাকে সেই ফাইলের 10 অতি সাম্প্রতিক লাইনগুলি দেখায়।
চার্লি শ্লিয়েসার

আসলে, এটি আমাকে ত্রুটিগুলি দেখাতে শুরু করেছে .. আমি প্রাপ্ত ত্রুটিটি মারাত্মক ত্রুটি: *** / সাইট / সমস্ত / মডিউল / ভিউ / প্লাগিন / ভিউ_প্লাগিন_লোক্যালাইজেশন_নিউন.সিঙ্কে 100663296 বাইট অবসন্ন (8192 বাইট বরাদ্দ করার চেষ্টা করা) এর মেমরি মাপের আকার size লাইনে 1
জয়রাম

1
এটিকে যুক্ত করা index.phpএকটি খারাপ ধারণা (এমনকি সাময়িক কারণ বেশিরভাগ লোকেরা এটি কাজ করে যদি পরে এটি সরিয়ে দিতে অলস হয়) তবে এটি আপনার সেটিংস ফাইলে সরাসরি আটকানো ভাল।
কেনারব

10

মৃত্যুর ফাঁকা সাদা পর্দার কারণটি হ'ল ত্রুটিটি প্রতিবেদন বন্ধ করা হয়েছে, ত্রুটিটি পরীক্ষা করতে আপনার সেটিং.এফপি ফাইলটিতে নিম্নলিখিত লাইনগুলি যুক্ত করুন:

error_reporting(E_ALL);
$conf['error_level'] = 2;
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

আপনি যে ত্রুটির মুখোমুখি হচ্ছেন ("এক্সট্রা বাইটসের এক্সট্রা মেমরি মাপ শেষ হয়ে গেছে") এর জন্য, আপনি নিম্নলিখিত জিনিসগুলি চেষ্টা করতে পারেন:

  1. নিজেই ক্যাশে কেটে ফেলুন এবং এটি সমস্যার সমাধান করে কিনা তা পরীক্ষা করুন (এটি করার আগে আপনার ডিবিটিকে ব্যাকআপ করা ভাল))

    Access phpMyAdmin and truncate all tables starting by cache_ from the database

  2. মেমরি সীমা বৃদ্ধি আপনার settings.php ফাইলের মধ্যে নিম্নলিখিত পংক্তি যোগ করে (যেমন উপরে ত্রুটির প্রধান কারণ মেমরির সার্ভার মডিউল আংশিক লোড সৃষ্ট এবং যে সমস্যা সৃষ্টি হয় ক্লান্ত হয়): ini_set('memory_limit', '-1');
    যোগ করার পদ্ধতি ini_set('memory_limit', '-1'); ওভাররাইড ডিফল্ট পিএইচপি মেমরি সীমা।
    আপনি যদি তার পরিবর্তে মেমরিটি সীমাবদ্ধ করতে চান তবে আপনি -1'256M' বা '512M' এর মতো মেমরির আকার সরবরাহ করতে পারেন।


6

এটি খুব ভাল হতে পারে যে আপনার একটি মডিউল মেমরির বাইরে চলেছে।

ডিফল্ট সেটিংসের চেয়ে ড্রপলকে আরও মেমরি দিয়ে চালানোর অনুমতি দেওয়ার জন্য আপনি আপনার সূচি.এফপি ফাইলটিতে কোডের একটি লাইন যুক্ত করতে পারেন:

ini_set('memory_limit','256M');

আপনার /drupal/index.php ফাইলে? পিএইচপি করার পরে লাইনে উপরের কোডটি যুক্ত করুন। যদি সবকিছু ঠিকঠাক কাজ শুরু করে, তবে আপনি স্মরণ করতে পারবেন কী মেমরির সমস্যা সৃষ্টি করছে (সম্ভবত এটি মডিউল)।

একটি মডিউল অক্ষম করুন, এবং তারপরে ini_set ('মেমরি_লিট', '256 এম') মন্তব্য করুন; এবং দেখুন এখন এটি লোড হয় কিনা।

Ini_set ('মেমরি_লিট', '256 এম') রেখে যাওয়ার পরামর্শ দেওয়া হয় না; সমাধান হিসাবে জায়গায়, কিন্তু এটি কমপক্ষে আপনাকে আপনার মডিউল তালিকা পৃষ্ঠাতে যেতে দেয়।

মেমরিটি কী ব্যবহার করছে তা নির্ধারণ করতে আপনি একটি ডিবাগ_ব্যাকট্রেস () করতে সহায়ক হতে পারেন ।


এটি কোনও
উপকারে আসে

এছাড়াও, আমি মডিউলগুলির তালিকা পৃষ্ঠাটি দেখতে পাচ্ছি, এটি কেবল তখনই ঘটে যখন আমি মডিউলগুলি সক্ষম / অক্ষম করি, নিশ্চিতকরণ পৃষ্ঠাটি দেখতে আমাকে আবার তাজা করতে হবে।
জয়রাম

2
ইনডিকেট () কলগুলি ইনডেক্স.এফপি-তে রাখার পরিবর্তে, যেখানে তারা কোনও আপডেটে মুছে ফেলা হবে, যদি আপনাকে পিএইচপি-তে কোডিং করতে হয় তবে আপনার সেটিংগুলি আপনার ফাইলের মধ্যে রেখে দেওয়া উচিত ph ওভাররাইড করে।
আলফ্রেড আর্মস্ট্রং

এটিকে যুক্ত করা index.phpএকটি খারাপ ধারণা (এমনকি সাময়িক কারণ বেশিরভাগ লোকেরা এটি কাজ করে যদি পরে এটি সরিয়ে দিতে অলস হয়) তবে এটি আপনার সেটিংস ফাইলে সরাসরি আটকানো ভাল।
কেনারব

6

ভূল:

মারাত্মক ত্রুটি: এক্স বাইটের অনুমোদিত মেমরির আকার শেষ হয়ে গেছে (ওয়াই বাইটগুলি বরাদ্দ দেওয়ার চেষ্টা করা হয়েছে)

দ্বারা 1024 * 1024 মেগাবাইট বিভক্ত মধ্যে বাইট এক্স রূপান্তর বা পরীক্ষা করার জন্য উল্ফর্যাম

পিএইচপি যখন ওয়াই বাইটগুলি বরাদ্দ দেওয়ার চেষ্টা করে তখনই ঘটে থাকে, তবে পিএইচপি memory_limitকনফিগারেশন সেটিংস দ্বারা সেট এক্স বাইটের পক্ষে কঠোর সীমা রয়েছে ।

প্রশাসনের orts প্রতিবেদনসমূহ »স্থিতির প্রতিবেদন» পিএইচপি (ইউআরএল /admin/reports/status/php:) এ গিয়ে বা ini_get('memory_limit')পিএইচপি-তে মুদ্রণের মাধ্যমে বর্তমান সীমাটি পরীক্ষা করা যেতে পারে (নোটটি সীমাটি ইউআই এবং সি এল এলির জন্য পৃথক হতে পারে)।

এটি ঠিক করার জন্য, আপনাকে আপনার উত্সের ব্যবহার হ্রাস করতে হবে, উদাহরণস্বরূপ:

  • আপনি বর্তমানে ব্যবহার করছেন না এমন কোনও উন্নয়ন মডিউল অক্ষম করুন (প্রস্তাবিত),

    এর মধ্যে রয়েছে: ডিভেল, ডেভেল থিমার (সক্ষম থাকলে)।

  • আপনি ব্যবহার করছেন না এমন কোনও মডিউল অক্ষম করুন,

  • কিছু নির্দিষ্ট ডিবাগ ভেরিয়েবল অক্ষম করুন যা আপনার মেমোরি সংস্থানগুলিতে প্রভাব ফেলতে পারে, উদাহরণস্বরূপ কয়েকটি উদাহরণ সহ drush:

    drush -y vset rules_debug 0
    drush -y vset rules_debug_log 0
  • এক্সডিবেগের মতো নির্দিষ্ট পিএইচপি এক্সটেনশনগুলি অক্ষম করুন,

  • রেডিস / মেমচেড ক্যাশে এবং কিছু পিএইচপি ক্যাশে সক্ষম করুন (যেমন ওপিসিচ / এক্সক্যাচ),
  • শেষ পর্যন্ত যদি উপরে সাহায্য না করে - আপনার পিএইচপি কনফিগারেশন বৃদ্ধি করুনmemory_limit

আপনি যদি মেমরির সীমা বাড়ানোর বিষয়ে সিদ্ধান্ত নেন, তবে এখানে প্রচুর লোকেরা index.phpআপনার পিএইচপি মেমরিটি বাড়ানোর জন্য আপনার পিএইচপি কোডটি পেস্ট করে আপনার মূলটি হ্যাক করার পরামর্শ দিচ্ছেন - কখনও তা করবেন না ! এটা খুব খারাপ অভ্যাস।

পরিবর্তে আপনার সম্পাদনা করুন settings.php(বা settings.local.phpএটিতে অন্তর্ভুক্ত থাকলে) এবং নীচের কোডটি এখানে শেষে পেস্ট করুন:

ini_set('memory_limit', '512M');

বা এটি করার সর্বোত্তম উপায় হ'ল আপনার পিএইচপি কনফিগারেশন ফাইলটি সম্পাদনা করা ( php.ini) এবং নিম্নলিখিত লাইনটি পরিবর্তন করা:

memory_limit = 512M  ; Maximum amount of memory a script may consume

আপনি কোথায় আছেন তা নিশ্চিত না হলে php.iniচেক করুন:

  • drush status হুকুম
  • বা যেতে দ্বারা /admin/reports/status/php

কোন পৃষ্ঠাগুলি / উপাদানগুলি সর্বাধিক স্মৃতি ব্যবহার করছে তা আরও তদন্ত করতে আপনার নিম্নলিখিত সম্ভাবনা রয়েছে:

আরও তথ্যের জন্য, পরীক্ষা করুন:


1
+1 চাপ দেওয়ার জন্য যে পিএইচপি ইউআই এবং সিআইএল আলাদা থাকতে পারে memory_limit। আমি কেবলমাত্র সমস্যাটি নিয়েই সমস্যাযুক্ত drushবলেছি কারণ আমার মধ্যে ত্রুটি ছিল /etc/php/7.0/cli/php.iniকিন্তু ভিতরে ছিল না /etc/php/7.0/cli/php.ini, তাই ড্রুপাল ইউআই ঠিকঠাক কাজ করছিল। ধন্যবাদ!
মিরো মার্চি

1

আপনি এই মেমরি সীমাটি নিয়ন্ত্রণ করতে একটি মডিউল ব্যবহার করতে পারেন। পিএইচপি রানটাইম কনফিগারেটর মডিউল আপনার php.ini ফাইলটি পরিবর্তন না করে কনফিগার করার অনেকগুলি বিকল্প সরবরাহ করে এবং অ্যাপাচি পুনরায় চালু করে।

আপনি নিম্নলিখিত প্যারামিটারগুলি কনফিগার করতে পারেন:

  • ফাইল আপলোড সীমা
  • স্মৃতি সীমা
  • সর্বোচ্চ নির্বাহের সময়সীমা
  • সর্বাধিক ইনপুট পরিবর্তনশীল সীমা

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