2011-02-14 17 views
5

मैं php में चल रहा हूँ निम्नलिखित:मुझे CreateProcess त्रुटि कोड 'विवरण कहां मिल सकता है?

Warning: proc_open(): CreateProcess failed, error code - 3 

कहाँ मैं क्या त्रुटि का अर्थ पता कर सकते हैं:

$res = proc_open($cmd, $descriptorspec, $pipes, "C:\\xampp\htdocs\\",null,array('bypass_shell'=>true)); 

समस्या यह है कि यह निम्न त्रुटि देता है?

पीएस: यह विंडोज सर्वर 2007 पर है। एसपी 2। उपयोगकर्ता व्यवस्थापक, पूर्ण Acess है। PHP संस्करण 5.3.1

+2

प्लस ईन वायर मर उपयोगकर्ता नाम। – McGafter

उत्तर

8

विंडोज में, CreateProcess वास्तव में एक त्रुटि कोड नहीं देता है। CreateProcess विफल होने पर अधिक जानकारी प्राप्त करने के लिए GetLastError का उपयोग करने के बजाय, FormatMessage का उपयोग करें त्रुटि कोड को GetLastError से उचित विवरण में बदलने के लिए करें। (GetLastError से त्रुटि कोड भी this list का उपयोग करके डीकोड किया जा सकता है)

proc_open() के स्रोत को देखते हुए, PHP वास्तव में विफलता की स्थिति में GetLastError() कर रहा है, और त्रुटि कोड यह लॉगिंग है GetLastError() के बजाय CreateProcess से तुलना से वापसी (जो एक BOOL देता है, संभावना नहीं होने के लिए 3 :))

नोट proc_open इस का उपयोग करता है संदेश डंप करने के लिए:

php_error_docref(NULL TSRMLS_CC, E_WARNING, "CreateProcess failed, error code - %u", dw);

... इसलिए कि "-" आप 3 से पहले मिल गए हैं सिर्फ एक हाइफ़न है, एक ऋण चिह्न नहीं। इसलिए आपको त्रुटि कोड 3 मिल रहा है, जो that list के अनुसार है "सिस्टम निर्दिष्ट पथ नहीं ढूंढ सकता है।"।

+1

मैं php में ऐसा कैसे करूं? – Tjorriemorrie

+0

@Tjorriemorrie Ooops, क्षमा करें, PHP भाग पर पर्याप्त ध्यान नहीं दे रहा था। मैंने PHP के पक्ष से क्या चल रहा है, और आपके संदेश को डीकोड करने के बारे में इसका क्या अर्थ है, इसके साथ मेरा जवाब अपडेट कर दिया है। –

+0

ग्रेट उत्तर, धन्यवाद – Tjorriemorrie

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