রেডহ্যাট ইএল ভি 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
পিএইচপি কল করে যে কমান্ডটি থেকে পতাকাটি অনুপস্থিত রয়েছে এবং যেমন পিয়ার কমান্ড এই একই বিষয়গুলির অধীন নয়।