ম্যাজেন্টো স্টোরটি ডিবাগ করার জন্য মৌলিক উপাদান


81

আমি কীভাবে আমার ম্যাজেন্টো স্টোরটি ডিবাগ করতে পারি

এটি এমন একটি প্রশ্ন যা এখন আমাদের কাছে খুব বেশি প্রাসঙ্গিক নয়, তবে 5 বছর আগে একটি ম্যাজেন্টো এসই সাইটটি উপস্থিত থাকলে এটি সম্ভবত আমাদের প্রথম প্রশ্ন হয়ে উঠত। যারা কেবল ম্যাজেন্টোতে প্রবেশ করছেন, বা এটির সাথে অপরিচিত - তাদের ডিবাগিংয়ের মূল বিষয়গুলি জানা বিষয়গুলির কারণটি প্রমাণ করার মূল বিষয় হতে পারে। এবং আমাদের কাছে এর অপ্রাসঙ্গিকতা থাকা সত্ত্বেও আমরা স্ব-উত্তরযুক্ত পদ্ধতির সাথে উপস্থিত এই প্রশ্নটি প্রাক-শূন্য করছি।

আমার সাইট ডাউন আছে সাহায্য!

  1. আমার নকশা কি ভুল?
  2. তৃতীয় পক্ষের মডিউলটি কি দোষে?
  3. আমি ত্রুটিটি দেখতে পাচ্ছি না কেন?

ডিবাগিংয়ের এমন একটি মানক পদ্ধতির অনুসরণ করে এই প্রতিটি প্রশ্নের তাত্ক্ষণিকভাবে উত্তর দেওয়া যেতে পারে যা এমনকি ব্যবহারকারীদের মধ্যে বেশিরভাগ মৌলিকই সম্পূর্ণ করতে পারে। একটি ম্যাজেন্টো স্টোর ডিবাগ করার মৌলিক বিষয়গুলি বাদ দেওয়ার প্রক্রিয়াটির মাধ্যমে।


5
একটি ভাল ডিবাগার এবং আপনার বুদ্ধি ব্যবহার করুন ...
সিলভাইন রায়

4
এটা কি গুরুত্বপূর্ণ প্রশ্ন?
ডেভিডালগার

5
না, এটি এই ইইটিএতে বল রোলিংয়ে সহায়তা করার জন্য একটি ইচ্ছাকৃত স্ব-জবাবযুক্ত প্রশ্ন। স্ট্যাক এক্সচেঞ্জ কেবলমাত্র স্ব- জবাবদিহিত প্রশ্নকেই মঞ্জুরি দেয় না, তবে সক্রিয়ভাবে এটি ব্লগ.স্ট্যাকওভারফ্লো ডটকম / ২০১২ / ২০১/ / জেনারেলকপিডিয়া-স্ট্যাক- এক্সচেঞ্জকে উত্সাহ দেয় । @sylvain এই প্রশ্নের সাহায্য করার জন্য নতুন / অনভিজ্ঞ ব্যবহারকারীদের প্রতি গতি বাড়ানোর হয় পদাঘাত একটি ডিবাগিং প্রক্রিয়া শুরু
Sonassi - বেন Lessani

@ সোনাসি আমি নীচু হই নি এবং আপনি আপনার প্রশ্নটি আরও পরিষ্কার করে দেখিয়েছেন। সম্ভবত আমি তার জন্য সাহায্য করতে পারি :) আমি জানি না যে এসই কেবল একটি প্রশ্নোত্তর নয়, এটি জানা ভাল। মূল বিষয় সম্পর্কে, এখানে উত্তরটি সম্ভবত বেশিরভাগ গভীর গভীর সমস্যার পৃষ্ঠতল, এ কারণেই আমি বলি যে একটি ডিবাগার ব্যবহার করুন এবং প্রথমে বুঝতে পারেন কীভাবে ম্যাজেন্টোর ইন্টার্ন প্রেরণ প্রক্রিয়াটি কাজ করে, আপনি বুঝতে পেরে আপনি অনেক সমস্যার সমাধান করতে পারেন। এটি আমার 5 সেন্ট। ট্যাক্স গণনা, শিপিং পদ্ধতি, ব্লক উত্পন্নকরণ বা অন্য কোনও সমস্যা কীভাবে সমাধান করবেন: ডিবাগিং! এটি ইন্টার্ন প্রক্রিয়া শিখতে সহায়তা করে।
সিলভাইন রায়é

2
বুঝতে পারছিল না। আমি যা সাহায্য করার চেষ্টা করছিলাম সেটি হ'ল আরও মৌলিক মারাত্মক ত্রুটি। অবশ্যই একক সমাধানের উত্তর দেওয়ার পক্ষে সমস্যার ক্ষেত্র অনেক বেশি বিস্তৃত। কুইর্কস / ছোট বাগগুলি ডিবাগিংয়ের মাধ্যমে নির্ণয় করা হয় - তবে মারাত্মক ত্রুটির জন্য - নীচে অনুযায়ী একটি স্বল্পতর সূক্ষ্ম পদ্ধতির প্রয়োজন। এবং হ্যাঁ, আমি প্রশ্নটি টুইট করেছি :)
বেন লেসানী - সোনাসি

উত্তর:


98

ডিবাগিং হ'ল কিছুটা শিল্প, তবে একটি সাধারণ পদ্ধতি অনুসরণ করে সহজেই আয়ত্ত করা যায়।

অবশেষে কোনও সমাধানে পৌঁছা পর্যন্ত প্রতিটি পয়েন্ট অনুসরণ করুন।


পিএইচপি ত্রুটিগুলি সক্ষম করুন

এটি বেশিরভাগ সমস্যার মূল চাবিকাঠি। সুরক্ষা বা অন্যান্য কারণে, পিএইচপি ত্রুটি প্রদর্শন সম্ভবত আপনার পিএইচপি কনফিগারেশন দ্বারা ডিফল্টরূপে অক্ষম করা যেতে পারে।

আপনি আরও স্থায়ী সমাধানের সাথে ত্রুটিগুলি সক্ষম করতে পারেন বা কেবল আরও কিছু অস্থায়ী।

স্থায়ী সমাধান

অ্যাপাচি / মোড_এফপি ব্যবহারকারীদের জন্য

আপনার নথির মূলের .htaccessফাইলটিতে - এটি শীর্ষে রেখে দিন।

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
php_flag  log_errors on
php_value error_log  /home/path/public_html/var/log/system.log

এনগিনেক্স / ফাস্টসিজিআই ব্যবহারকারীদের জন্য

আপনার এনগিনেক্স ভার্চুয়ালহোস্ট কনফিগারেশনে, হয় চূড়ান্ত location .php {নির্দেশিকাতে, বা fastcgi_paramsফাইলে (যদি আপনার কোনও নির্দিষ্ট থাকে)

fastcgi_param PHP_VALUE  display_startup_errors=on;
fastcgi_param PHP_VALUE  display_errors=on;
fastcgi_param PHP_VALUE  html_errors=on;
fastcgi_param PHP_VALUE  log_errors=on;
fastcgi_param PHP_VALUE  error_log=/home/path/public_html/var/log/system.log;

অস্থায়ী / সার্বজনীন সমাধান

যে কোনও প্ল্যাটফর্মের জন্য

index.phpআপনার দস্তাবেজের মূলটিতে ম্যাগেন্টো বুটস্ট্রেপ সম্পাদনা করুন এবং নিম্নলিখিত লাইনে কোনও অসুবিধা করুন:

#ini_set('display_errors', 1);

বিকাশকারী মোড সক্ষম করুন

যখন আপনার কোনও ত্রুটি হয়েছিল এবং হঠাৎ করেই "ত্রুটি প্রতিবেদন" পৃষ্ঠাটি আঘাত করে এবং আপাতদৃষ্টিতে অকেজো ত্রুটিযুক্ত স্ট্রিং দেওয়া হয় 1184257287824- আপনার কয়েকটি বিকল্প রয়েছে।

স্থায়ী সমাধান

অ্যাপাচি / মোড_এফপি ব্যবহারকারীদের জন্য

আপনার ডকুমেন্টের মূল .htaccessফাইলটিতে - এটি শীর্ষে রেখে দিন।

SetEnv MAGE_IS_DEVELOPER_MODE true

এনগিনেক্স / ফাস্টসিজি ব্যবহারকারীদের জন্য

আপনার এনগিনেক্স ভার্চুয়ালহোস্ট কনফিগারেশনে, হয় চূড়ান্ত location .php {নির্দেশিকাতে, বা fastcgi_paramsফাইলে (যদি আপনার কোনও নির্দিষ্ট থাকে)

fastcgi_param MAGE_IS_DEVELOPER_MODE true;

অস্থায়ী / সার্বজনীন সমাধান

index.phpআপনার ডকুমেন্টের মূলটিতে ম্যাগেন্টো বুটস্ট্র্যাপ সম্পাদনা করুন এবং হয় ifবিবৃতিটি সর্বদা সত্য করুন, বা আপনার নির্দিষ্ট আইপির জন্য সক্ষম করুন।

if (isset($_SERVER['MAGE_IS_DEVELOPER_MODE']) || true) {
  Mage::setIsDeveloperMode(true);
}

অথবা

if (isset($_SERVER['MAGE_IS_DEVELOPER_MODE']) || $_SERVER['REMOTE_ADDR'] == 'my.ip.add.ress') {
  Mage::setIsDeveloperMode(true);
}

আপনার অনুমতি পরীক্ষা করুন

ভুল অনুমতিগুলি প্রচুর সমস্যার কারণ হতে পারে, যার মধ্যে অনেকগুলি প্রথম নজরে খুঁজে পাওয়া খুব সহজ নয়।

উদাহরণ স্বরূপ.
যদি পিএইচপি ./mediaডিরেক্টরিতে লিখতে না পারে এবং আপনি জেএস সম্মিলন সক্ষম করেছেন - ম্যাজেন্টো মিডিয়ার জন্য সম্মিলিত ফাইল এবং সম্পর্কিত অনন্য ইউআরআই তৈরি করতে অক্ষম। পরিবর্তে, আপনি আপনার ব্রাউজার উত্স কোডে যা পাবেন তা হ'ল মিডিয়া ফাইলের একটি সম্পূর্ণ সার্ভার পথ /home/path/public_html/media/xxx

অন্যথায়, সাইটটি স্বাভাবিক হিসাবে কাজ করে প্রদর্শিত হতে পারে - কোনও সমালোচনামূলক ত্রুটি বাস্তবে দৃশ্যমান নয়।

দয়া করে মনে রাখবেন, এই অনুশীলনটি ডেডিকেটেড হোস্টিংয়ের জন্য সুরক্ষিত তবে যদি আপাচি প্রক্রিয়াটি ব্যবহারকারী হিসাবে ক্রুটেড না হয় তবে ভাগ করা হোস্টিংয়ের সাথে সুরক্ষা সমস্যাগুলি উপস্থাপন করতে পারে।

আমাদের উদাহরণে, এসএসএইচ / এফটিপি ব্যবহারকারী sonassi, অ্যাপাচি ব্যবহারকারী apacheএবং গ্রুপটিapache

অ্যাপাচি গ্রুপে এফটিপি / এসএসএইচ ব্যবহারকারী যুক্ত করুন

সবচেয়ে গুরুত্বপূর্ণ, আমাদের এটি নিশ্চিত করতে হবে যে এফটিপি / এসএসএইচ ব্যবহারকারী আপাচি গ্রুপের অংশ, উদাহরণস্বরূপ, এর apache(তবে এটিও সাধারণত www-data)

usermod -a -G apache sonassi

এফটিপি / এসএসএইচ-তে আপনার যতটুকু গ্রুপ রয়েছে তত সংখ্যক ব্যবহারকারী যুক্ত করে রাখুন।

মূল অনুমতিগুলি পুনরায় সেট করুন

সুতরাং আমরা শুরু করার আগে, সমস্ত অনুমতি সঠিক কিনা তা নিশ্চিত করে নেওয়া যাক।

chown -R sonassi:apache /home/path/public_html/
find /home/path/public_html/ -type d -exec chmod 775 {} \;
find /home/path/public_html/ -type f -exec chmod 664 {} \;

পরিবর্তনগুলি স্থায়ী করা

এসিএল এবং স্টিকি বিটস

লিনাক্সের এসিএলগুলি আমাদের ক্ষেত্রে সুনির্দিষ্ট নিয়মগুলি সংজ্ঞায়িত করার অনুমতি দেয়, আমাদের ক্ষেত্রে ফাইলগুলি তৈরি করার পরে কী অনুমতি নিতে পারে। একটি স্টিকি বিট (পরে উল্লিখিত) গ্রুপ উত্তরাধিকারের যত্ন নেয়, তবে অনুমতিগুলির সাথে সহায়তা করে না, এজন্য আমরা এসিএল ব্যবহার করি।

সক্রিয় পার্টিশনে এসিএল সমর্থন সক্ষম করে শুরু করুন, দয়া করে আপনার কার্নেলটি এসিএল সমর্থন দিয়ে সংকলিত হয়েছে তা নিশ্চিত করুন

তোমার পার্টিশন হতে পারে /, /home, /varবা অন্য কিছু, যেমন উপযুক্ত প্রতিস্থাপন করুন।

mount -o remount,acl /home

এখন এসিএল সক্ষম হয়েছে, আমরা এসিএল বিধি এবং গ্রুপ স্টিকি বিট সেট করতে পারি:

setfacl -d -m u::rwx,g::rwx,o::rx /home/path/public_html/
chmod g+s /home/path/public_html/

তবে আমার এসিএল সমর্থন নেই

যদি আপনার কার্নেল এসিএল সমর্থন না করে তবে আপনি umaskডিফল্ট ফাইল অনুমতি সেট করতে (যা BASH, FTP এবং PHP এর জন্য রান টাইম সেটিং) ব্যবহার করতে পারেন। ম্যাজেন্টো সাধারণত সেট umask(0)করে index.php, তবে এটি পরিবর্তন করা আপনার পক্ষে হবে।

আপনার index.phpপরিবর্তনটি umaskলাইন হতে হবে

umask(022);

এবং এসএসএইচের জন্য আপনার BASH পরিবেশে এটি আপনার .bashrcবা আপনার মধ্যে সেট করুন.bash_profile

umask 022

আপনার এফটিপি সার্ভারের জন্য আপনাকে এর জন্য ডকুমেন্টেশন পড়তে হবে তবে নীতিটি একই।


থিমটি ডিফল্টে ফিরুন

এটি সম্ভবত আপনার থিম বা প্যাকেজই এই সমস্যার জন্য দায়বদ্ধ। ভ্যানিলা ম্যাজেন্টো থিমে ফিরে যাওয়া এটি সন্ধানের দ্রুত উপায়।

** এটি ক্যাভিয়েটের সাথে আসে যে কিছু মডিউল নির্দিষ্ট থিম বৈশিষ্ট্যের উপর নির্ভরশীল হতে পারে *

অ্যাডমিন প্যানেলের মাধ্যমে কিছু পরিবর্তন করার পরিবর্তে কেবল আপত্তিজনক ডিরেক্টরিগুলির নামকরণ করা অনেক সহজ।

এসএসএইচ এর মাধ্যমে

mv ./app/design/frontend/myBrokenTheme{,.tmp}
mv ./skin/frontend/myBrokenTheme{,.tmp}

বা আপনার এফটিপি ক্লায়েন্টের মাধ্যমে, আপনার প্যাকেজটিকে অন্য কোনও কিছুতে অনুসরণ করুন এবং নতুন নাম দিন। যেমন।myBrokenTheme.tmp

এটি যদি আপনার সমস্যার সমাধান করে

তারপরে আপনাকে টেমপ্লেটের কোন অংশটি সমস্যাযুক্ত তা থেকে আরও গভীর খনন করতে হবে। সুতরাং আপনার প্যাকেজটি পুনরুদ্ধার করুন এবং প্রতিটিটির মধ্যে পরীক্ষার জন্য নিম্নলিখিতগুলি চেষ্টা করুন।

অপরিহার্যভাবে, প্রক্রিয়াটি হ'ল ধীরে ধীরে ডিরেক্টরিগুলি সক্ষম করা আপনি ফাইল ট্রিটিকে অতিক্রম করার সময় - যতক্ষণ না আপনি আপত্তিজনক ফাইলটি খুঁজে না পান।

  1. এতে বিন্যাসের ডিরেক্টরিটি পুনরায় নামকরণ করুন .tmp
  2. এতে টেম্পলেট ডিরেক্টরিটির নতুন নাম দিন .tmp

তারপরে যদি হয় কোনও স্থির ফল পাওয়া যায় তবে লেআউট ডিরেক্টরিতে থাকা সমস্ত ফাইলের নাম পরিবর্তন করুন .tmp- (এসএসএইচ ব্যবহারকারীদের জন্য ls | xargs -I {} mv {} {}.tmpবা rename 's/^/.tmp/' *)

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

এটি যদি আপনার সমস্যার সমাধান না করে

আপনার base/defaultবা enterprise/defaultডিরেক্টরিগুলি দূষিত হয়ে যাওয়ার সম্ভাবনা রয়েছে - এবং একটি পরিচিত পরিষ্কার সংস্করণ দিয়ে সেরা প্রতিস্থাপন করা হয়।

আপনি ম্যাজেন্টোর একটি পরিষ্কার বিল্ড ডাউনলোড করে এবং আপনার ডিরেক্টরিগুলি প্রয়োজনীয় হিসাবে প্রতিস্থাপন করে এটি করতে পারেন। এসএসএইচ এর মাধ্যমে আপনি এটি করতে পারেন:

cd /home/path/public_html/
mkdir clean_mage
cd clean_mage
MAGENTO_VERSION=1.7.0.0
wget -O magento.tgz  http://www.magentocommerce.com/downloads/assets/$MAGENTO_VERSION/magento-$MAGENTO_VERSION.tar.gz
tar xvfz magento.tgz
cd /home/path/public_html/app/design/frontend
mv base{,.tmp}
cp -par /home/path/public_html/clean_mage/magento/app/design/frontend/base .
cd /home/path/public_html/skin/frontend
mv base{,.tmp}
cp -par /home/path/public_html/clean_mage/magento/skin/frontend/base .

আপনি diffযদি কোনও পরিবর্তন যাচাই করতে চান তবে আপনি দুটি ডিরেক্টরিতেও সুযোগটি নিতে পারেন।

diff -r base base.tmp

বিশেষ দ্রষ্টব্য। এই পদ্ধতিটি প্রক্রিয়া চলাকালীন আরও ত্রুটি ঘটায়, কারণ মডিউল নির্ভরতা নির্দিষ্ট ফাইলগুলির অস্তিত্বকে নির্দেশ করে। দুর্ভাগ্যক্রমে, কোর্সের জন্য এটি সমান।


স্থানীয় মডিউলগুলি অক্ষম করুন

ডিফল্টরূপে, ম্যাজেন্টো পিএইচপি সংজ্ঞায়িত করে নিম্নলিখিত ক্রমে লোডের ক্লাসের পথ অন্তর্ভুক্ত

Local > Community > Core

যদি কোনও ফাইল স্থানীয় হয় - এটি লোড করুন এবং আরও কিছু করবেন না।
যদি কোনও ফাইল সম্প্রদায়ে থাকে - এটিকে লোড করুন এবং আরও কিছু করবেন না।
যদি কোনও ফাইল অন্য কোথাও খুঁজে পাওয়া যায় না - এটি কোর থেকে লোড করুন।

আবার, ম্যাজেন্টো অ্যাডমিন প্যানেলের মাধ্যমে মডিউলগুলি অক্ষম করার পরিবর্তে ফাইল স্তরে এটি করা আরও ব্যবহারিক।

সাধারণত, একটি মডিউল "যথাযথ" উপায় অক্ষম করতে, আপনি সংশ্লিষ্ট ./app/etc/modules/MyModule.xmlফাইলটি সম্পাদনা করে সেট করে দিতেন <active>false</active>- তবে এটি আসলে কোনও শ্রেণি লোড হতে বাধা দেয় না।

যদি অন্য শ্রেণি একটি মডিউলে একটি প্রদত্ত শ্রেণি প্রসারিত করে (কোনও ম্যাগেন্টো নির্ভরতা ঘোষণাকে উপেক্ষা করে), এটি এখনও লোড হবে - এক্সটেনশনটি অক্ষম রয়েছে কিনা তা বিবেচনা না করেই।

আবার, কোনও এক্সটেনশন অক্ষম করার সর্বোত্তম উপায় হ'ল ডিরেক্টরিটির নামকরণ name

স্থানীয় অক্ষম করে শুরু করুন

কেবল ডিরেক্টরিটিকে এফটিপি এর মাধ্যমে নামকরণ করুন, বা নিম্নলিখিত এসএসএইচ কমান্ডটি ব্যবহার করুন

mv ./app/code/local{,.tmp}

তারপরে সম্প্রদায়টিকে অক্ষম করুন

mv ./app/code/community{,.tmp}

সমস্যাটি যদি উভয় থেকেই সমাধান করা হয়

তারপরে এটি কোন মডিউলটি বিশেষত ত্রুটিটি থেকে উদ্ভূত তা বোঝার একটি বিষয়। প্যাকেজ নির্ণয়ের জন্য উপরের উদাহরণের মতো, একই প্রক্রিয়া প্রযোজ্য।

সুতরাং এক্স ডিরেক্টরিটি পুনরুদ্ধার করুন এবং প্রতিটিটির মধ্যে পরীক্ষা করে নিম্নলিখিতটির চেষ্টা করুন।

মূলত, প্রক্রিয়াটি ক্রমশ ত্রুটিটি দেখা না দেওয়া পর্যন্ত ধীরে ধীরে ডিরেক্টরিগুলি (মডিউলগুলি) একের পর এক সক্ষম করতে হয়

  1. ডিরেক্টরিতে সমস্ত মডিউল নামকরণ .tmp(এসএসএইচ ব্যবহারকারীদের জন্য ls | xargs -I {} mv {} {}.tmpবা rename 's/^/.tmp/' *)
  2. .tmpফাইলের নাম থেকে সরিয়ে প্রতিটি মডিউল ধীরে ধীরে সক্ষম করুন

সমস্যা সমাধান না হলে

তারপর এটি সম্ভব নিজেই দূষিত হয়। প্রধান Magento পিএইচপি কোর থাকে

./app/code/core
./lib

সুতরাং আবার, এই ডিরেক্টরিগুলির নাম পরিবর্তন করুন এবং একটি পরিষ্কার বৈকল্পিক অনুলিপি করুন। ধরে নিই যে আপনি এসএসএইচ এর মাধ্যমে ইতিমধ্যে উপরে হিসাবে ম্যাজেন্টোর একটি পরিষ্কার সংস্করণ ডাউনলোড করেছেন, আপনি এটি করতে পারেন:

cd /home/path/public_html/app/code
mv core{,.tmp}
cp -par /home/path/public_html/clean_mage/magento/app/code/core .

তারপরে যদি সমস্যাটি এখনও সমাধান না হয় তবে libডিরেক্টরিটিও প্রতিস্থাপন করুন

cd /home/path/public_html
mv lib{,.tmp}
cp -par /home/path/public_html/clean_mage/magento/lib .

এই মুহুর্তে, আপনার ম্যাজেন্টো স্টোর একটি পরিবর্তিত ডাটাবেস সহ ভ্যানিলা ইনস্টলেশন ছাড়া আর কিছুই হবে না।

কিছু মডেল প্রকৃতপক্ষে এখনও ডাটাবেসে সঞ্চিত থাকে (উদা। অর্ডার ইনক্রিমেন্ট) - সুতরাং এই সময়ে এটি ম্যানুয়ালি সেই সম্পাদনাগুলি করার ক্ষেত্রে পরিণত হয়। এখনও অবধি, উপরের সমস্ত পদক্ষেপ স্থায়ী ক্ষতি ছাড়াই বিপরীত হয়েছে। তবে আমরা যদি একটি ক্লিন ম্যাজেন্টো ডাটাবেসও আমদানি করে থাকতাম - এটি অপরিবর্তনীয় প্রমাণিত হতে পারে (ব্যাকআপটি পুনরুদ্ধার করাতে সংক্ষিপ্ত)।


উপরের গাইডটি আপনাকে একটি ত্রুটি শনাক্তকরণের পথে চালিত করে; ফলাফল ত্রুটি ঠিক করতে না।

Www.sonassi.com/ জ্ঞান- base / magento-debug- process এবং www.sonassi.com/ জ্ঞান- base / stop-magento- perifications - erferences- স্থায়ীভাবে থেকে সামগ্রী স্বেচ্ছায় উত্সাহিত


7
আমি মনে করি যে উত্তরটি কিছু ম্যাজেন্টো ব্যবহারকারীদের জন্য সহায়ক হতে পারে তবে পোস্টার নিজেই প্রশ্নের উত্তর দেওয়ার সাথে সাথে এটি একটি সম্প্রদায়-উইকির মতো প্রশ্নোত্তর প্রশ্ন হিসাবে চিহ্নিত করা উচিত।
ম্যাথিয়াস জেইস

8
স্বতঃ উত্তর দেওয়া প্রশ্নগুলি কেবল অনুমোদিত নয়, তবে এসই দ্বারা উত্সাহিত। blog.stackoverflow.com/2012/05/encyclopedia-stack- এক্সচেঞ্জ । আরও ব্যবহারকারীর এই বিটাটি বিকশিত হতে সহায়তা করার জন্য করা উচিত, অন্য সদস্যদের অন্যদের সাহায্য করার জন্য এবং সাইটের উন্নতি করার চেষ্টা করার জন্য অন্য সদস্যদের বকা না দেওয়া?
বেন লেসানী - সোনাসি

এটি 755এবং 644অনুমতি থাকা উচিত নয় ? বা আপনার কাছে সুপারিশ করার কোনও বিশেষ কারণ আছে 775এবং 664?
জর্জেন থেলেন

@ জারজেন - আমাদের সমস্ত সার্ভারের জন্য - এনগিনেক্স / অ্যাপাচি / পিএইচপি সর্বদা এসএসএইচ / এফটিপি হিসাবে একই ব্যবহারকারী হিসাবে চালিত হয় - এটি শেয়ার্ড / ডেডিকেটেড হোস্টিংয়ে থাকুক। সুতরাং অনুমতিগুলি rwxকেবল মালিকের জন্যই হতে পারে - গ্রুপ হিসাবে এবং অন্য সকলেই প্রাসঙ্গিক নয়। তবে যেমনটি আমি উল্লেখ করেছি - প্রত্যেকেই তাদের সার্ভারটি সঠিকভাবে কনফিগার করে না (আসলে খুব খুব কম লোকই করে) - এবং অ্যাপাচি / এনগিনেক্স / পিএইচপি ব্যবহারকারীর পক্ষে এসএসএইচ / এফটিপি ব্যবহারকারীর থেকে পৃথক হওয়ার সম্ভাবনা রয়েছে - সুতরাং একে অপরকে যুক্ত করুন প্রতিটি স্বতন্ত্র গ্রুপ ততক্ষণে rwxতাদের সক্ষম হওয়ার মতো ফাইলগুলির জন্য অনুমতি দেয় ।
বেন লেসানী - সোনাসি

আপনি যদি টার্মিনালটি ব্যবহার করে দুটি ডিরেক্টরি পৃথক করতে চান না, আপনি এই জিইউআই বিকল্পগুলির মধ্যে একটি ইনস্টল করতে পারেন: Askubuntu.com/questions/12473/…
পাবলোফিউমারা

18

হিসাবে টুইটারে অনুরোধ এবং মেটা আলোচনা আমি এখানে অ devs জন্য একটি ডিবাগিং টিউটোরিয়াল শুরু করব।

প্রথমে আমি মনে করি (এমনকি আপনিও ম্যাজেন্টো এটির সাথে জড়িত হওয়ার চেষ্টা করেন) ডেভেলপার / বিকাশকারী দল ছাড়া মার্জেন্টো কোনও বণিকের পক্ষে খুব জটিল। তবে আপনি যদি সাহসী হন এবং এটি চেষ্টা করতে চান তবে আপনাকে সহায়তা করার জন্য আমরা এখানে আমাদের সেরাটি দিচ্ছি। আমি মনে করি কিছু প্রশ্নের জন্য "আমি এটি কীভাবে করব?" এবং "দয়া করে আমার কাজটি করুন, আমি এটি গুগল করতে খুব বোকা" বেশ লাইন। আমি বুঝতে পারি যে এটি প্রায়শই শক্ত, গুগল মনে করে কারণ আপনি কী জানেন যে আপনি কী গুগল করছেন, কারণ আপনি এখনও নামকরণ জানেন না। এটি বলেছে, আসুন আমরা ম্যাজেন্টো স্টোরের সাথে যে জিনিসগুলি করতে পারি তা সংগ্রহ করি, এমনকি আপনি (গুলি) তিনি কোনও বিকাশকারী নন।

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

দাবি অস্বীকার: এই পোস্টে উল্লিখিত সমস্ত ডিরেক্টরি এবং ফাইলগুলি ম্যাজেন্টো রুট ফোল্ডারের সাথে সম্পর্কিত যা /var/wwwহোস্টিং সরবরাহকারীর উপর নির্ভর করে আপনার তথাকথিত ডকুমেন্ট রুট সর্বত্রই হতে পারে, আপনার সরবরাহকারীকে জিজ্ঞাসা করুন, আপনি যদি নিজের ম্যাজেন্টো খুঁজে না পান তবে !

বিকাশ মোড

আপনি সত্যিকারের ত্রুটি থাকতে চান, সেই ক্র্যাপটি "একটি ত্রুটি ঘটল" পৃষ্ঠাটি নয় যা ম্যাজেন্টো সাধারণত বিতরণ করে। http://www.fontis.com.au/blog/magento/custom-magento-error-page

ধন্যবাদ ফন্টিস.কমএই চিত্রের জন্য ।

পৃষ্ঠায় উল্লিখিত প্রতিবেদনগুলি পাওয়া যাবে var/reports/<the_number>

আপনি যখন বিকাশ মোডটি সক্রিয় করেন, ম্যাজেন্টো সত্যিকারের ত্রুটি উত্থাপন করে, এই ত্রুটিগুলি বিশেষত ডেটাবেসগুলির মতো শংসাপত্রগুলি ফাঁস করতে পারে!সুতরাং, প্রোডাকশন সার্ভারগুলি চালু করার আগে ভাবেন!

index.phpসংস্করণের উপর নির্ভর করে ম্যাজেন্টোর মূল ফোল্ডারে আপনার ফাইলটি খুলুন , আপনি 73 রেখার চারপাশে এই রেখাগুলি খুঁজে পান:

if (isset($_SERVER['MAGE_IS_DEVELOPER_MODE'])) {
    Mage::setIsDeveloperMode(true);
}

#ini_set('display_errors', 1);

এখন মোড সক্রিয় করতে, আপনি এই লাইন পরিবর্তন করতে হবে।

আপনি যদি নিজের আইপি ঠিকানাটি জানেন (বেশিরভাগ লোক প্রতি 24 ঘন্টা অন্তত জার্মানিতে একটি নতুন পান), গুগল আপনাকে এখানে সহায়তা করে:

আপনার সার্বজনীন আইপি ঠিকানাটি 87.138.100.68

if (isset($_SERVER['MAGE_IS_DEVELOPER_MODE']) 
    || $_SERVER['REMOTE_ADDR'] == 'my.ip.add.ress'
) {
    Mage::setIsDeveloperMode(true);
    ini_set('display_errors', 1);
}

যদি আপনি কোনও কারণে আপনার আইপি না জানেন তবে আপনি সবার জন্য ত্রুটি দেখাতে পারেন।

#if (isset($_SERVER['MAGE_IS_DEVELOPER_MODE']) || true) {
  Mage::setIsDeveloperMode(true);
#}
ini_set('display_errors', 1);

লগিং

ম্যাজেন্টো দুটি ফাইলে প্রচুর স্টাফ লগ করে:

  • var/log/exception.log
  • var/log/system.log

ব্যতিক্রমগুলি সর্বদা লগ থাকে। ব্যাকএন্ডে সিস্টেম লগ সক্ষম করা প্রয়োজন:

System > Configuration > Developer > Log

এখানে চিত্র বর্ণনা লিখুন

Enabledহ্যাঁতে সেট করুন এবং আপনি আরও ত্রুটি দেখতে পাচ্ছেন এবং বার্তাগুলি ভিতরে system.logএবং ডিবাগ করুনexception.log

এটি কি থিম সমস্যা?

আপনার নিজস্ব থিম রয়েছে, এটি এখানে ব্যাকেন্ডে কনফিগার করা হয়েছে:

সিস্টেম> কনফিগারেশন> ডিজাইন

এখানে চিত্র বর্ণনা লিখুন

কেবি.মাইজেন্ট.কমকে ধন্যবাদ জন্য

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

আপনি যদি ডিফল্ট থিমটিতে সমস্যাটি পুনরুত্পাদন করতে না পারেন তবে আপনার থিমটি নষ্ট হয়ে গেছে, দয়া করে থিম বিক্রেতার সাথে যোগাযোগ করুন। আমরা তৃতীয় পক্ষের থিম, বিশেষত বাণিজ্যিকগুলির জন্য সমর্থন দিই না।

এখন কি?

আপনি একটি সত্যিকারের ত্রুটি পেয়েছেন, কেউ পুনরুত্পাদন করতে পারে, এটি কি ডিফল্ট থিমে পুনরুত্পাদনযোগ্য? দুর্দান্ত, দয়া করে একটি প্রশ্ন খুলুন, এবং আমরা আমাদের সর্বোত্তম সাহায্য দিচ্ছি।

প্রশ্নে:

  • আপনি কি করছেন তা বর্ণনা করুন
  • কি ত্রুটি উত্থাপিত হয়
  • লগ ফাইল কিছু আছে?
  • হতে পারে ত্রুটির স্ক্রিন-শট

5
  1. সবার আগে আপনার বিকাশকারী মোড সক্ষম করা উচিত
  2. আপনি index.php এ ত্রুটিগুলি প্রদর্শন করতে সক্ষম করতে পারেন: ini_set ('display_erferences', 1);
  3. যেকোন স্মার্ট আইডিই (পিএইচপিএসট্রোম / এক্সলিপস) এর সাথে এক্সডেবগ এক্সটেনশন সংকলন করুন
  4. কাস্টম এবং তৃতীয় পক্ষের মডিউলটি অক্ষম করুন
  5. আপনার ব্যতিক্রম এবং ত্রুটি লগ পর্যালোচনা করুন, ব্যতিক্রম লগের তালিকাভুক্ত ত্রুটিগুলি সমাধান করুন
  6. কার্লটি পরীক্ষা করুন এবং এমক্রিপট এক্সটেনশনটি আপনার সার্ভারে অবশ্যই লোড করা উচিত
  7. ফোল্ডারটি পরীক্ষা করুন এবং ফাইলের অনুমতিগুলি ডাউন -আর সোনাসি: অ্যাপাচি / হোম / পাথ / পাবলিক_এইচটিএমএল / সন্ধান করুন / হোম / পাথ / পাবলিক_এইচটিএমএল / টাইপ ডি-এক্সেক chmod 775 {} \; সন্ধান করুন / হোম / পাথ / পাবলিক_এইচটিএমএল /-টাইপ এফ-এক্সেক chmod 664 {} \;
  8. যদি সেট না করা থাকে তবে মিডিয়া আপডেট করুন এবং var ডিরেক্টরি অনুমতি 0777
  9. আইডিই শুরু করুন (পিএইচপিস্ট্রোম), তারপরে সূচি.বি.পি.পি.তে ডিবাগার প্রারম্ভ পয়েন্টগুলি সেট করুন 10. ​​F8 টিপুন এবং আপনার ত্রুটি না হওয়া পর্যন্ত এগিয়ে যান

উপরের পদক্ষেপগুলি ব্যবহার করার জন্য আপনার অবশ্যই ত্রুটি হওয়া উচিত।


1
আমি আপনার উত্তরগুলির প্রশংসা করি তবে ইতিমধ্যে উত্তরগুলি গ্রহণ করা প্রশ্নটির উত্তর না দিয়ে কেন আপনি এই প্রশ্নের
dh47

3
@ dh47 আমার জন্য, অভিষেক যা করেছিলেন তা সঠিক। আমি কেবল এটি উল্লেখ করতে চাই, ইতিমধ্যে গৃহীত প্রশ্নগুলির উত্তর দেওয়া এখনও প্রাসঙ্গিক এবং গুরুত্বপূর্ণ। আসলে আমাদের সাইটে (ম্যাজেন্টো এসই) এই গুরুত্বপূর্ণ দিকটির অভাব রয়েছে। বেটা থেকে বেরিয়ে আসার জন্য 2.5 উত্তর রেশন থাকা জরুরী। বর্তমানে আমাদের কাছে মাত্র 1.6 উত্তর অনুপাত রয়েছে। সুতরাং একই প্রশ্নের একাধিক উত্তর প্রশংসা করা উচিত। এই প্রশ্নের কারণে কোনও উত্তর না দিয়ে কোনও প্রশ্ন রেখে যাবেন না এর একটি গ্রহণযোগ্য উত্তর আছে। অতিরিক্তভাবে যুক্ত করার জন্য যদি আপনার আরও একটি পয়েন্ট থাকে তবে আপনার উত্তর দেওয়া উচিত।
রাজীব কে তোমি

-1

ডিবাগ ব্যাকট্রেস

ম্যাজেন্টোতে ফাংশন কলটি ডিবাগ করার জন্য এটি ভাল ফাংশন।

এই ফাংশনটি যুক্ত / কনফিগারেশন.এফপি অন্তর্ভুক্ত করুন বা নতুন ফাইল তৈরি করুন এবং আপনার সমস্ত সাধারণ ব্যবহৃত পিএইচপি ফাংশন রাখুন।

ফাংশন back_trace ($ প্রস্থান = সত্য) {
  $ কল_ব্যাক_মোথডস = '';
  $ কল_ব্যাক_মোথডস। = '';
  $ কল_ব্যাক_মোথডস =

  $ কাউন্টার = 1;
  foreach (debug_backtrace () হিসাবে (সূচক => $ তথ্য) {
    // যদি (0 == $ সূচক) চালিয়ে যান;

    $ কল_ব্যাক_মোথডস। = ''। $ কাউন্টার ++। '';
    $ কল_ব্যাক_মোথডস। = ''। । ডেটা ['ফাংশন']। '';
    $ কল_ব্যাক_মোথডস। = ''। $ ডেটা ['লাইন']। '';
    $ কল_ব্যাক_মোথডস। = ''। । ডেটা ['ফাইল']। '';
  }

  $ কল_ব্যাক_মোথডস। = '';

  মুদ্রণ $ কল_ব্যাক_মোথডস;

  যদি (সত্য == $ প্রস্থান) প্রস্থান;
}

আউটপুট হবে

এখানে চিত্র বর্ণনা লিখুন

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