শেল_এক্সেক সমস্যাগুলি কীভাবে ডিবাগ করা যায়
ঠিক আছে, এখানে আমাদের একটি সমস্যা রয়েছে: কিছু জিনিস টার্মিনালে কাজ করে এবং পিএইচপি এর শেল_এক্সেক (বা এক্সিকিউটি, স্পন, যাই হোক না কেন) তে কাজ করে না। আসুন ভাবুন: আপনি এবং পিএইচপি এর মধ্যে পার্থক্য কী? এখানে তিনটি রয়েছে:
পিএইচপি এইচটিটিপি সার্ভারের বিধি থেকে কার্যকর করা হয়
প্রকৃতপক্ষে, আপনার টার্মিনালটি yourname
ব্যবহারকারী থেকে চলছে এবং পিএইচপি থেকে কার্যকর করা হয়েছে www-data
। সুতরাং, প্রথম ধারণাটি হ'ল www-data
ব্যবহারকারীর কাছ থেকে টার্মিনাল খোলা এবং একই কমান্ডটি ব্যবহার করা। তাই ....
/etc/passwd
ফাইল খুলুন , www-data
ব্যবহারকারীর সাথে লাইন সন্ধান করুন এবং এটির লগইন শেল (শেষটি) থেকে /bin/false
(বা যাই হোক না কেন) এ পরিবর্তন করুন /bin/bash
।
- খুলুন
www-data
এর টার্মিনাল:su www-data
- পিএইচপি-ভি বা যা কিছু আপনি পিএইচপি থেকে চালাতে পারবেন না চেষ্টা করুন। যদি এটি কাজ না করে - আপনি দুর্দান্ত লগগুলি দেখতে পাবেন এবং সমস্যাটি ডিবাগ করতে সক্ষম হবেন।
/etc/passwd
আপনার কাজ শেষ হয়ে যাওয়ার পরে ফাইলটি ফিক্স করতে ভুলবেন না
পিএইচপি পিএইচপি থেকে কার্যকর করা হয় ।
পিএইচপি হ'ল ভৌতিক বিষয় এবং এপাচি / এনগিনেক্স এবং পিএইচপি.আইএনই কনফিগারেশনে অনেকগুলি বিকল্প রয়েছে যা আপনার প্রচেষ্টাটি ভেঙে দিতে পারে।
এটি ডিবাগ করা আরও কিছুটা জটিল। এখানে দুটি বিকল্প রয়েছে:
ব্রাউজারে লগগুলি সক্ষম করুন এবং সমস্যাটি দেখুন। ব্রাউজারে ত্রুটি দেখতে আপনার php.ini
, চালু display_errors
এবং অন্যান্য সমস্ত পতাকা সম্পাদনা করুন । তারা আপনি সেগুলি পড়তে এবং ডিবাগ করতে পারেন।
প্রাপ্ত করুন www-data
এর শেল (প্রথম অধ্যায় দেখুন) এবং ভালো কিছু চালানো
echo '<?php shell_exec("php -v"); ?>' | php
যা কনসোলে একই পিএইচপি কোডটি কার্যকর করবে এবং আপনি ত্রুটিগুলি এবং ডিবাগ দেখতে সক্ষম হবেন।
পিএইচপি SELinux / apparmor থেকে কার্যকর করা হয়
সেলিনাক্স এবং অ্যাপারমোর এমন সুরক্ষা বিষয় যা অ্যাপ্লিকেশনগুলিকে নির্দিষ্ট ক্রিয়া করতে নিষেধ করে (উদাহরণস্বরূপ, অন্যান্য অ্যাপ্লিকেশন বা কিছু নির্দিষ্ট অ্যাপ্লিকেশন তৈরি করা)। হতে পারে এটি আপনার সার্ভারে সক্ষম হয়েছে।
চেক করতে - সেলিনাক্স / অ্যাপমর্ম অক্ষম করুন এবং সমস্যা আছে কিনা তা পরীক্ষা করুন।
ঠিক করতে - উপযুক্ত ম্যানুয়াল পড়ুন এবং আপনার মামলার জন্য অনুমতিমূলক নিয়মগুলি ঠিক করুন।