পিএইচপি এক্সিকিউট ফাংশন এসএসএইচ দ্বারা কাজ করা কিছু আদেশে ব্যর্থতার খবর দেয়


1

আমি পিএইচপি 5.4.12 এর সাথে সেন্টোস 6 64 বিটে আছি।

এটি পিএইচপি দ্বারা অত্যন্ত অদ্ভুত আচরণ।

নিম্নলিখিত স্ক্রিপ্ট দেখুন:

echo 'Trying Query: whereis jbig2dec<br>';
exec('whereis jbig2dec',$output) or die('Failed');

$location=explode(' ',implode($output));
$location=$location[1];

echo 'Result: '.implode($output)."<p>";

echo 'Trying Query: '.$location.' --help<br>';
exec($location.' --help',$output) or die('Failed');

echo 'Result: '.implode($output)."<p>";

echo 'Trying Query: jbig2dec --help<br>';
exec('jbig2dec --help',$output) or die('Failed');

echo 'Result: '.implode($output)."<p>";

ফলাফল হলো:

Trying Query: whereis jbig2dec
Result: jbig2dec: /usr/local/bin/jbig2dec
Trying Query: /usr/local/bin/jbig2dec --help
Failed

মূলত আপনি উপরে দেখতে পারেন যে পিএইচপি এক্সিকিউট ফাংশন এর জন্য কাজ করে whereis jbig2decতবে ব্যর্থ হয় /usr/local/bin/jbig2dec --help। তবে আমি টাইপ করলে /usr/local/bin/jbig2dec --helpবা jbig2dec --helpএসএসএইচে লিখলে আমি jbig2dec থেকে সঠিক প্রতিক্রিয়া পাই।

এটা কী ভাবে সম্ভব?

উত্তর:


4

/usr/local/bin/jbig2dec --helpএসএসএচের ওপরের রিটার্নের মানটি এটি পরীক্ষা করুন :

$ /usr/local/bin/jbig2dec --help
[... generates some output ...]
$ echo $?

শেষ কমান্ডটি পূর্ববর্তী কলের "রিটার্ন মান" মুদ্রণ করে। এর একটি রিটার্ন মান 0হ'ল "কমান্ড সফলভাবে কার্যকর করা" শেলের উপায় " অন্য কোনও কিছুর রিটার্ন মান একটি ত্রুটি নির্দেশ করে।

যদি exec()0 এর মতো কোনও রিটার্ন মানটির মুখোমুখি হয় (যা কিছু প্রোগ্রাম সাহায্যের বার্তা দেয়, যেহেতু প্রোগ্রামটি প্রযুক্তিগতভাবে চালিত হয়নি), এটি পিএইচপি প্রসঙ্গে "মিথ্যা" প্রত্যাবর্তন করবে এবং এইভাবে or die()অংশটি ট্রিগার করবে এবং প্রদত্ত পিএইচপি স্ক্রিপ্টটি সমাপ্ত করবে will ভুল বার্তা.

সংক্ষিপ্ত কথায়: আপনার কমান্ড সম্ভবত একটি সফল স্থিতি ফিরিয়ে দেয় না এবং আপনি পিএইচপি-কে die()তা না করার জন্য বলেছিলেন ।

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