2009-01-13 19 views
7

मैं इस php कोड का उपयोग कर रहा:अवैध आदेश त्रुटि कोड 127

exec("unrar e file.rar",$ret,$code); 

और 127 यानी अवैध आदेश की एक त्रुटि कोड हो रही है ... लेकिन जब मैं ssh अपने काम के माध्यम से इस आदेश का उपयोग कर रहा हूँ ... क्योंकि सर्वर पर अनार स्थापित है ... तो क्या कोई अनुमान लगा सकता है कि निष्पादन सही सामान क्यों नहीं कर रहा है?

+0

सिर्फ था एक विचार: file.rar निश्चित रूप से उसी निर्देशिका में है जो php स्क्रिप्ट चल रहा है? और एक निर्देशिका में अनार है जो पाथ में है? – Ben

+0

हाँ file.rar एक ही निर्देशिका में है ... सिस्टम पर unrar स्थापित है ... क्या कोई विशिष्ट एथ है जिसे इसे php exec द्वारा निष्पादित किया जाना चाहिए? – Intellex

+0

मैंने टर्मिनल पर अपने कामकाजी जुर्माना को बताया जो एसएसएच – Intellex

उत्तर

21

एप्लिकेशन के प्रत्यक्ष पथ (/ usr/bin/जो भी कुछ भी अनार) का उपयोग करने का प्रयास करें, ऐसा लगता है जैसे php एप्लिकेशन नहीं ढूंढ सकता है।

+0

के माध्यम से उपयोग कर रहा है, मुझे यह मानना ​​है कि अनार बाइनरी वाली निर्देशिका की तरह लगता है कि पाथ var में शामिल नहीं है, इसलिए सीधा पथ का उपयोग करने में मदद करनी चाहिए या निर्देशिका में बाइनरी जोड़ना चाहिए अगर पथ नहीं मिल सका। – UnkwnTech

3

thanx सभी आपकी प्रतिक्रिया के लिए !!

मैं इस

 
//somedir is inside the directory where php file is 
chdir("somedir"); 
exec("/home/username/bin/unrar e /home/path/to/dir/file.rar"); 

की कोशिश की और अब यह कोई बाहर निकलें कोड लौटे ... oher आदेशों फ़ाइल कर रहे हैं .. मैं करने की कोशिश की mkdir आदि ..: रों

+0

btw यह आदेश सीधे खोल – Intellex

1

ohkiee guyz thanx .. । और हाँ वहाँ $ पथ के साथ कुछ त्रुटियाँ हो सकती है ... लेकिन साथ पूरा पथ दिया अपने काम कर रहे :)

 
exec("/home/user/bin/unrar e /home/user/xxx/yyy/file.rar"); 

7

यदि आपने अपाचे और php chrooted है, तो आप chrooted वातावरण में/bin/sh रखना भी चाहेंगे। अन्यथा, exec() या passthru() ठीक से काम नहीं करेगा, और त्रुटि कोड 127 उत्पन्न करेगा, फ़ाइल नहीं मिली।

+0

पर चल रहा था यह मेरे लिए समस्या हल हो गया। धन्यवाद! –

1

किसी और मामले किसी को अभी भी इस समस्या हो जाता है बस में, पोस्ट यहाँ पर एक नज़र डालें:

http://gallery.menalto.com/node/2639#comment-8638

उद्धरण:

मैं इस समस्या पाया। समस्या मेरी सुरक्षा-परावर्तक ओपनबीएसडी थी। जब 3.2 करने के लिए 3.1 में से उन्नयन वे कहा:

  • अपाचे डिफ़ॉल्ट रूप से chroot'd रन। इसे अक्षम करने के लिए, नया -u विकल्प देखें।

क्रोट ने अपाचे को निर्देशिका के बाहर किसी भी चीज़ तक पहुंचने से रोका, इसलिए मैंने सब कुछ netpbm सहित अपाचे निर्देशिका में स्थानांतरित कर दिया। सबकुछ सुलभ और निष्पादन योग्य था, लेकिन मुझे लगता है कि यह अभी भी "सुरक्षित मोड" में था क्योंकि exec() हमेशा 127 लौटा।

वैसे भी, -उ विकल्प के साथ httpd चलाना कम सुरक्षित गैर chroot पर वापस चला गया 'डी अपाचे स्टार्टअप, जिसने exec() को फिर से काम करने की अनुमति दी।

4

इस गूगल में एक शीर्ष जवाब के रूप में आता है के बाद से, मैं अपने ठीक साझा करना चाहते थे:

उन्हें आसानी से ठीक रहा था php.ini फ़ाइल में सेफ_मोड निष्क्रिय करने के लिए

; Safe Mode 
; http://www.php.net/manual/en/ini.sect.safe-mode.php#ini.safe-mode 
safe_mode = Off 
+0

संस्करण 5.4.0 के रूप में PHP से सुरक्षित मोड हटा दिया गया है। http://php.net/manual/en/features.safe-mode.php – Nick

संबंधित मुद्दे