PECL কমান্ড ত্রুটিগুলির দীর্ঘ তালিকা তৈরি করে


47

বর্তমানে সেন্টস 6.5 এ পিএইচপি 5.4 চলছে।

আমি ওয়েবট্যাটিক php55w প্যাকেজ ইনস্টল করেছি এবং তারপরে PEL + PECL বরাবর রেডিস এবং মঙ্গো পিইসিএল এর মাধ্যমে ইনস্টল করেছি।

খুব শীঘ্রই, আমি বুঝতে পারি যে 5.5 আমি যে কাঠামোর সাথে কাজ করছি তার সাথে সামঞ্জস্যপূর্ণ নয় তাই আমি yp php55w মুছে ফেলেছি এবং তার জায়গায় php54w ইনস্টল করেছি।

এখন pecl কমান্ড কিছুতেই কাজ করে না। এটি প্রতিবারই আমি কোনও পেকল কমান্ড ইস্যু করার সময় এই ত্রুটিগুলির সত্যই দীর্ঘতর স্ট্রিং তৈরি করে (সংক্ষেপে ... বেশ কয়েকবার কয়েকবার বারবার বলা হয়):

Warning: Invalid argument supplied for foreach() in Command.php on line 259

Warning: Invalid argument supplied for foreach() in /usr/share/pear/PEAR/Command.php on line 259

...etc etc etc...

Notice: Undefined index: honorsbaseinstall in Role.php on line 180

Notice: Undefined index: honorsbaseinstall in Role.php on line 180

...etc etc etc...

Notice: Undefined index: installable in Role.php on line 145

Notice: Undefined index: installable in Role.php on line 145

...etc etc etc...

Notice: Undefined index: phpfile in Role.php on line 212

Notice: Undefined index: phpfile in Role.php on line 212

...etc etc etc...

Notice: Undefined index: config_vars in Role.php on line 49

Notice: Undefined index: config_vars in Role.php on line 49

...etc etc etc...

Warning: Invalid argument supplied for foreach() in PEAR/Command.php on line 259

Warning: Invalid argument supplied for foreach() in /usr/share/pear/PEAR/Command.php on line 259

...etc etc etc...

XML Extension not found

আমি এটা কিভাবে ঠিক করবো?

উত্তর:


91

রেডহ্যাট ইএল ভি 6 তে আমার পিএইচপি ইনস্টলেশন 5.5.14 এ আপডেট করার পরে আমি এই ত্রুটিটি পেরিয়ে এসেছি। আমি ইউম প্যাকেজ ম্যানেজারের মাধ্যমে পিএইচপি ইনস্টল করেছি এবং তারপরে আমি যে পিএইচপি এক্সটেনশনগুলি ব্যবহার করছি তার পুনরায় ইনস্টল করা দরকার to কীভাবে এই সমস্যাটি সমাধান করবেন সে সম্পর্কে টিপস অনুসন্ধান করতে গিয়ে আমি এই প্রশ্নটি নিয়ে এসেছি এবং এখন আমি একটি কার্যকর সমাধান আবিষ্কার করেছি যে আমি আমার অনুসন্ধানগুলি এখানে ভাগ করে নিতে চাই। অন্যান্য পরামর্শ আমি অনলাইনে পেয়েছি যার মধ্যে পিইসিএল / পিয়ার মুছে ফেলা এবং পুনরায় ইনস্টল করা অন্তর্ভুক্ত ছিল এবং এমনকি আমার পিএইচপি ইনস্টলেশনটি এই সমস্যার সমাধান করেনি। অবশেষে আরও কিছু গবেষণা এবং PECL / PEAR এর উত্স কোড পর্যালোচনা করার পরে আমি আসল কারণটি পেয়েছি। আশা করি এরপরে যা যা ঘটেছিল তা অন্যের জন্য সহায়ক হবে:

আপনার পিএইচপি ইনস্টলটি যদি ডিফল্টরূপে এক্সএমএল সক্ষম না করে থাকে তবে আপনি এই ত্রুটিটি দেখতে পাচ্ছেন, তবে পরিবর্তে এক্সএমএল সমর্থনটি পিএইচপি এক্সটেনশন মডিউলটির মাধ্যমে আপনার পিএইচপি ইনস্টলেশনতে লোড করা হয় ( ./configure --disable-xmlপিএইচপি তৈরির সময় পতাকাটি নির্দিষ্ট করা থাকলে এটি ঘটতে পারে) উত্স থেকে, বা যদি আপনি বিভিন্ন প্যাকেজ পরিচালকদের মাধ্যমে পিএইচপি ইনস্টল করেন যেখানে পিএইচপিটির সেই বিল্ডটি এক্সটেনশন মডিউলের মাধ্যমে এক্সএমএল লোড করার জন্য কনফিগার করা আছে)।

পিইসিএল থেকে ত্রুটি আউটপুটটির শেষ লাইনটি কীভাবে হয় তা লক্ষ্য করুন XML Extension not found- এই ত্রুটিটি প্রদর্শিত হওয়ার কারণ হ'ল পিইসিএল যখন এক্সএমএল পার্সার.এফপি শ্রেণিটি ব্যবহার করার চেষ্টা করে তবে এটি ব্যর্থ হয় কারণ এটি এক্সএমএল এক্সটেনশন অ্যাক্সেস করতে পারে না (এটি extension_loaded('xml')লাইনটি ব্যবহার করে এক্সএমএল মডিউলটি পরীক্ষা করে XMLParser.php উত্সের 259), এবং এক্সএমএল মডিউলটি অনুপলব্ধ হওয়ায় এটি এর কনফিগারেশন / সেটিংস ফাইলগুলিকে পার্স করতে পারে না এবং উপরে দেখা সমস্ত অন্যান্য ত্রুটিগুলি আউটপুট করতে পারে না।

এই সমস্যাটি হওয়ার কারণটি PECL পরিচালনা করে due পিইসিএল কমান্ড নিজেই কেবল একটি শেল স্ক্রিপ্ট, যা প্রথমে আপনার সিস্টেম ইনস্টলেশনতে পিএইচপি ইনস্টল করার পরে কাজ করে এবং তারপরে প্রধান পিইসিএল পিএইচপি স্ক্রিপ্ট ফাইলের পথ সরবরাহের আগে কমান্ড লাইনে পিএইচপি কল করে fla পিইসিএল শেল স্ক্রিপ্টটি যে সমস্যার পতাকা ব্যবহার করছে তা হ'ল -nবিকল্পটি, যা পিএইচপিকে কোনও php.iniফাইল উপেক্ষা করতে বলে (এবং তাই পিএইচপি php.iniএই ক্ষেত্রে এক্সএমএল সহ আপনার ফাইল নির্দিষ্ট করে দেওয়া কোনও অতিরিক্ত এক্সটেনশন লোড করবে না )।

-nনিম্নলিখিত দুটি কমান্ড চালিয়ে পতাকাটির প্রভাব দেখতে পাওয়া যায় :

  • প্রথমে php -mকমান্ড লাইনে চলার চেষ্টা করুন
  • তারপরে আউটপুটটির সাথে তুলনা করুন php -n -m

আপনি দ্বিতীয় কমান্ডটি চালনার সময় তালিকাভুক্ত এক্সএমএল এক্সটেনশনটি দেখতে পাবেন না কারণ -nপতাকাটি পিএইচপিকে আমাদের php.iniফাইল (গুলি) বিশ্লেষণ না করতে বলেছিল ।

আপনি যদি vi `which pecl`কমান্ড লাইনে চলে যান তবে আপনার পিসিএল কমান্ডের বিষয়বস্তুগুলি দেখতে হবে (উপরে উল্লিখিত হিসাবে এটি এর কেবল একটি শেল স্ক্রিপ্ট), এবং আপনি যদি শেষ লাইনটি পরীক্ষা করেন, আপনি এই জাতীয় কিছু দেখতে পাবেন:

exec $PHP -C -n -q $INCARG -d date.timezone=UTC -d output_buffering=1 -d variables_order=EGPCS -d safe_mode=0 -d register_argc_argv="On" $INCDIR/peclcmd.php "$@"

আপনার -nপতাকা -Cএবং -qপতাকাগুলির মধ্যে তালিকাভুক্ত পতাকাটি দেখতে হবে । আপনি যদি PECL শেল স্ক্রিপ্টটি সম্পাদনা করেন, -nপতাকা বাদ দিয়ে আপনার এখন সমস্যা ছাড়াই আবার PECL চালানো উচিত to

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

কেবলমাত্র সম্পূর্ণতার জন্য, আপনি চালনা করলে আপনি vi `which pear`পিইসিএল ব্যবহার করে এমন একটির সাথে একই ধরণের শেল স্ক্রিপ্ট দেখতে পাবেন, তবে -nপিএইচপি কল করে যে কমান্ডটি থেকে পতাকাটি অনুপস্থিত রয়েছে এবং যেমন পিয়ার কমান্ড এই একই বিষয়গুলির অধীন নয়।


5
এপিক উত্তর, পেকল স্ক্রিপ্ট সম্পাদনা আমার জন্য কাজ করেছিল।
অ্যালেক্স রস

29
আপনি স্যার ... একজন সাধু। ... ... আক্ষরিক অর্থে আমি এমন একটি স্ক্রিপ্ট লিখতে যাচ্ছি যা প্রতিটি সংবাদপত্রের শ্রুতিমধুগুলি স্ক্যান করে, এবং আপনি চলে যাওয়ার সাথে সাথে আমি ভ্যাটিকানকে বিটিফিকেশন প্রক্রিয়া শুরু করতে বলছি, এই উত্তরটি পৃথিবীতে আপনার কাজের উদাহরণ হিসাবে ব্যবহার করে। দুর্দান্ত উত্তর :)
রিওয়ালক

5
ধন্যবাদ। TLDR; /usr/bin/pecl-n প্যারামিটারটি ব্যবহার না করার জন্য শেষ লাইনটি সম্পাদনা করুন ।
dtbarne

7
রান করুনsed -i "$ s|\-n||g" /usr/bin/pecl
এভিপ্রোগ্রামার

6
আমার -nশেষ কমান্ডে নেই peclএবং ত্রুটির দীর্ঘ তালিকাটি দুর্ভাগ্যবশত রয়ে গেছে
ফাঁকা কাগজে শ্বেতপত্রগুলি

29

আমি যখন ওপেন্টুতে পিসিএল কমান্ডের ডাকলাম তখনই আমি এই সমস্যার মুখোমুখি হয়েছি। php-xmlপ্যাকেজ ইনস্টল করা কেবল আমাকেই সাহায্য করেছিল । আপনার যদি XML মডিউলটি ইতিমধ্যে ইনস্টল রয়েছে কিনা তা প্রথমে পরীক্ষা করে দেখুন

php -m

আপনি যদি এটি না পান তবে আপনাকে তা করতে হবে

sudo apt-get install php-pear

এটি স্বয়ংক্রিয়ভাবে পিএইচপি-এক্সএমএল প্যাকেজ ইনস্টল করবে। অথবা আপনি ঠিক এই জাতীয় এক্সএমএল ইনস্টল করতে পারেন (আপনার পিএইচপি এর সংস্করণের উপর নির্ভর করে)

sudo apt-get install php-xml php7.0-xml

আপনি যদি এক্সএমএল খুঁজে পান তবে আপনি এটি মুছে ফেলা এবং পুনরায় ইনস্টল করুন

sudo apt-get purge php*-xml
sudo apt-get autoremove php*-xml
sudo apt-get install php-xml php7.0-xml

আপনার প্যাকেজ ম্যানেজার হিসাবে আরপিএম থাকলে আপনি yum install php-xmlএবং ব্যবহার করতে পারেনyum remove php-xml


1
পিএইচপি-এক্সএমএল php7.0-xML ইনস্টল করা হয়েছে তবে এক্সএমএল মডিউলটি এখানে নেই
লেনিক্স

উজ্জ্বল উত্তর এটি আমাকে সাহায্য করেছে
সৈয়দ আকিয়েল

8

আমি পিএইচপি 5.6 ব্যবহার করছি।

অনেক উত্তর পিএইচপি-এক্সএমএল ইনস্টল করার পরামর্শ দেয় তবে এটি আমার পক্ষে কার্যকর হয় না, যখন আমি নির্দিষ্ট সংস্করণটি পছন্দ করি

sudo apt-get install php5.6-xml

এবং সমস্ত কিছু কাজ করে, সম্ভবত এটি অন্যকে সহায়তা করবে।


পিএইচপি 5.6
devst3r

আমার জন্য পিএইচপি 7.2, উবুন্টু 16.04 এ কাজ করেছেন। আমার আদেশ ছিল: sudo apt install php7.2-xml। আপনি চাইলে আমার কমান্ডটি অন্তর্ভুক্ত করার জন্য উত্তরটি আপডেট করতে পারেন :) আপনাকে ধন্যবাদ
ভোগদেব

4

"এক্সএমএল এক্সটেনশান পাওয়া যায়নি" সমস্যা সমাধানের জন্য আপনাকে পিএইচপি-এক্সএমএল প্যাকেজ ইনস্টল করতে হবে


2
আরও কিছুটা ব্যাখ্যা এখানে কার্যকর হতে পারে।
ক্যাস্পারড

দয়া করে মনে রাখবেন যে এই প্রশ্নটি প্রায় 2 বছরের পুরানো। পুরানো প্রশ্নের উত্তর এড়াতে চেষ্টা করুন কেননা এটি হোম স্ক্রিনটিকে বিশৃঙ্খলা করে।
ক্যাথরিন ম্যাকআইনেস

1
আমি এর জবাব দেওয়ার কারণটি ছিল যে আমি আজ এই সমস্যার মুখোমুখি হয়েছি এবং এই সমাধানটি আমার সমস্যাটি সমাধান করেছে!
কাভেহম্ব

এটিই কেবল আমাদের করতে হয়েছিল, যেহেতু আমি ব্যবহার করছি php7.2এবং আমি কোনও ফাইল সম্পাদনা করতে পারি নি কেবল কমান্ড ব্যবহার করে আমার আপেক্ষিক সংস্করণ ইনস্টল করেছিsudo apt-get install php7.2-xml
মুহাম্মদ ওমর আসলাম '

2

যেকোন পিয়ার আরপিএম পুরোপুরি সরান, তারপরে rm -rf /usr/share/pear/আবার পিয়ার এবং আপনার সমস্ত মডিউল ইনস্টল করুন।


এটি অনুসরণ করে yum erase php-pearএবং এখন সব ঠিক আছে! ধন্যবাদ! :)
ইকমোভো

1
পুনরায় ইনস্টল করার সময় (স্টক পিএইচপি-পিয়ার প্যাকেজের পরিবর্তে) পিএইচপি পিয়ারের php54w সংস্করণ ব্যবহার করে দয়া করে নোট করুন। সুতরাং সংক্ষেপে 1. yum erase php-pear2. rm -rf /usr/share/pear/3.yum install php54w-pear
আটটিলা ফুলপ

2

নিম্নলিখিত পদক্ষেপগুলি আমার জন্য কাজ করে।

1 পদক্ষেপ:

yum erase php-pear

2 পদক্ষেপ:

# rpm -Uvh http://ftp.iij.ad.jp/pub/linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

3 পদক্ষেপ:

 yum install --enablerepo=remi --enablerepo=remi-php56 php-pear

0

পিএইচপি 7 / ডেবিয়ান লোক (একই / একই কারণ):

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

সূত্র: https://www.dotdeb.org/2016/06/24/php-7-0-8- for-jessie/

দয়া করে নোট করুন যে বিসিমেচ, ডিবিএ, এমবিস্ট্রিং, সাবান, এক্সএমএল এবং জিপের এখন পৃথক ডেডিকেটেড প্যাকেজ রয়েছে।

এই যে মানে

php -n

আর xML অন্তর্ভুক্ত করবে না, যা PEAR প্যাকেজ পার্সার উপর নির্ভর করে (এক্সএমএল পার্সার)। উত্স Pear.php.net/package/PEAR/download

পিএইচপি এক্সটেনশন: এক্সএমএল

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

শিপড পিয়ার প্যাকেজটিতে একটি সমস্যাও রয়েছে, যার সাথে আপগ্রেড করা দরকার ... বর্তমান খ্যাতির কারণে অন্য কিছু পোস্ট করার অনুমতি নেই

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