के माध्यम से गिट पुल आसानी से निदान करने के लिए सबसे कठिन समस्या है जिसे मैंने कभी अनुभव किया है। मुझे कॉल करने में असमर्थ लगता है:PHP निष्पादन आईआईएस
exec('call git pull', $output);
प्रक्रिया लटकती है और आईआईएस को इसके साथ ले जाती है।
exec('call git status', $output); //works fine
यहाँ मैं क्या किया है:
- जनरेट किया RSA कुंजी GitHub को जोड़ा गया (पासकोड खाली है)
- हर कोई
mysite/.git/
पर अनुमति है तथाProgram Files/git/bin
औरcmd.exe
- ssl की कोशिश की 'स्लैश' मुद्दे के साथ अन्य पदों में उल्लिखित प्रमाणपत्र फिक्स
- एसएसएच के बजाय https: // का उपयोग करने का प्रयास किया
- की कोशिश की stderr को
2>NUL
और2>&1
जाहिर पाइपिंग, वहाँ एक अनुमतियाँ मुद्दा है जहां exec
कॉल cmd.exe
जो बारी में कॉल git.exe
, जो बारी में sh.exe
कॉल GitHub, जो बारी में git-pull
और संभवतः का उपयोग करता है से कनेक्ट करने के git-send-pack
और भगवान और क्या जानते हैं।
मुझे लगता है कि 'sh.exe' अनुमान लगाता है कि वर्तमान उपयोगकर्ता आईयूएसआर है और इसे प्रमाणित करने के लिए आरएसए कुंजी नहीं मिल रहा है।
यदि मैं यह समझ सकता हूं कि ssh-keygen
आईयूएसआर खाता कैसे है, तो मैंने कोशिश की होगी।
अगर मैं यह समझ सकता हूं कि exec
गिट के बजाय गिट बैश कैसे करें (cmd.exe
के माध्यम से) मैंने कोशिश की होगी।
मैं PHP के exec
विधि के माध्यम से मेरी GitHub रेपो से खींच है:
यहाँ प्रश्न में यह सरलतम रूप है?
समस्या निश्चित रूप से एसएसएच के साथ प्रतीत होती है, लेकिन मैं कोशिश करने के लिए सब कुछ खत्म कर रहा हूं।
सहायता!
आप केवल 'गिट पुल' के बजाय 'कॉल गिट पुल' का उपयोग क्यों कर रहे हैं? – gustavotkg
कॉल केवल पढ़ने के रूप में exec() का उपयोग करने के लिए 'अनुशंसित' दृष्टिकोण था - मैंने दोनों विधियों का प्रयास किया है और कोई सराहनीय अंतर नहीं देखा – rmirabelle
मैं काफी सकारात्मक हूं कि आपको लेखन अनुमतियों के साथ समस्याएं आ रही हैं। यदि आप गिट स्टेटस बनाम गिट पुल के बीच अंतर के बारे में सोचते हैं .. एक संग्रह के बारे में जानकारी प्रदर्शित करता है जबकि दूसरा वास्तव में फाइल सिस्टम स्तर परिवर्तन करता है। – Kevin