से आउटपुट नहीं प्राप्त कर सकता है मुझे PHP स्क्रिप्ट से पाइथन स्क्रिप्ट निष्पादित करने में कोई समस्या है। मेरा क्लाइंट ब्लूहोस्ट का उपयोग करता है, इसलिए मैंने यहां वर्णित easy_install विधि के साथ पाइथन के लिए एक थर्ड पार्टी मॉड्यूल (numpy) स्थापित किया है: https://my.bluehost.com/cgi/help/530?step=530PHP स्क्रिप्ट पाइथन लिपि
मेरी समस्या का प्रदर्शन करने के लिए, मैंने दो पायथन स्क्रिप्ट और एक PHP स्क्रिप्ट बनाई है।
hello.py शामिल हैं:
print "Hello, World!"
hello-numpy.py शामिल हैं:
import numpy
print "Hello, World!"
PHP स्क्रिप्ट शामिल हैं:
Output from exec('python hello.py'): <?php echo exec('python hello.py'); ?><br>
Output from exec('python hello-numpy.py'): <?php echo exec('python hello-numpy.py'); ?><br>
Output from exec('whoami'): <?php echo exec('whoami'); ?>
मैं तो पीएचपी से उत्पादन मिलता है:
Output from exec('python hello.py'): Hello, World!
Output from exec('python hello-numpy.py'):
Output from exec('whoami'): venicetw
हालांकि, SSH खिड़की से इन स्क्रिप्ट चला निम्नलिखित परिणाम प्राप्त होते हैं:
# python hello.py
Hello, World!
# python hello-numpy.py
Hello, World!
# whoami
venicetw
ऐसा लगता है जब अजगर स्क्रिप्ट आयात Numpy पीएचपी किसी भी उत्पादन नहीं मिलता है, लेकिन यह SSH से ठीक काम करता है। इसके अलावा, PHP को hello.py के लिए 0 की वापसी स्थिति मिलती है लेकिन 1 हैलो- numpy.py के लिए। मैंने सोचा कि यह एक अनुमति मुद्दा हो सकता है, लेकिन PHP और SSH दोनों "venicetw" उपयोगकर्ता के रूप में चल रहे हैं। PHP और अपाचे को पायथन स्क्रिप्ट से आउटपुट प्राप्त करने से क्या रोका जाएगा? क्या यह कुछ है जो मैं ब्लूहोस्ट के साथ चर्चा कर सकता हूं, या कुछ और मुझे जांचना चाहिए? हम Apache 2.2.21
, PHP 5.2.17
, Python 2.4.3
, और numpy 1.6.0
का उपयोग कर रहे हैं।
अद्यतन: SSH प्रिंट निम्नलिखित पायथन पथ:
/home8/venicetw/public_html/venicenoise/python
/home8/venicetw/.local/lib/python2.4/site-packages/ogcserver-0.1.0-py2.4.egg
/home8/venicetw/.local/lib/python2.4/site-packages/PIL-1.1.7-py2.4-linux-x86_64.egg
/home8/venicetw/.local/lib/python2.4/site-packages/lxml-2.3.2-py2.4-linux-x86_64.egg
/home8/venicetw/.local/lib/python2.4/site-packages/WebOb-1.2b2-py2.4.egg
/home8/venicetw/.local/lib/python2.4/site-packages/PasteScript-1.7.5-py2.4.egg
/home8/venicetw/.local/lib/python2.4/site-packages/PasteDeploy-1.5.0-py2.4.egg
/home8/venicetw/.local/lib/python2.4/site-packages/Paste-1.7.5.1-py2.4.egg
/home8/venicetw/.local/lib/python2.4/site-packages/numpy-1.6.0-py2.4-linux-x86_64.egg
/home8/venicetw/.local/lib/python2.4/site-packages
/home8/venicetw/.local/lib/python/site-packages
/home8/venicetw/public_html/venicenoise/python
/usr/lib64/python24.zip
/usr/lib64/python2.4
/usr/lib64/python2.4/plat-linux2
/usr/lib64/python2.4/lib-tk
/usr/lib64/python2.4/lib-dynload
/usr/lib64/python2.4/site-packages
/usr/lib64/python2.4/site-packages/Numeric
/usr/lib64/python2.4/site-packages/PIL
/usr/lib64/python2.4/site-packages/gtk-2.0
/usr/lib/python2.4/site-packages
लेकिन अपाचे केवल इन पायथन पथ प्रिंट:
/home8/venicetw/public_html/venicenoise/python
/usr/lib64/python24.zip
/usr/lib64/python2.4
/usr/lib64/python2.4/plat-linux2
/usr/lib64/python2.4/lib-tk
/usr/lib64/python2.4/lib-dynload
/usr/lib64/python2.4/site-packages
/usr/lib64/python2.4/site-packages/Numeric
/usr/lib64/python2.4/site-packages/PIL
/usr/lib64/python2.4/site-packages/gtk-2.0
/usr/lib/python2.4/site-packages
समाधान: से क्रियान्वित/usr/bin/env तक PHP और SSH दोनों, मैं यह निर्धारित करने में सक्षम था कि PHP को पाइथन पथ के लिए एक पर्यावरण चर अनुपलब्ध था जहां numpy स्थापित है। इस मामले में,
putenv('PYTHONPATH=/home8/venicetw/.local/lib/python2.4/site-packages:/home8/venicetw/.local/lib/python/site-packages:');
PHP स्क्रिप्ट की शुरुआत में, सब कुछ अपेक्षित काम करता है।
आह, यह मिला: "आयात त्रुटि: कोई मॉड्यूल numpy नाम नहीं है" मुझे आश्चर्य है कि यह अपाचे को पुनरारंभ करने का मामला है? –
सुनिश्चित करें कि आप दोनों बार एक ही पायथन संस्करण तक पहुंच रहे हैं। –
बस चेक किया गया - वे दोनों पाइथन 2.4.3 तक पहुंच रहे हैं। और साझा होस्टिंग वातावरण में होने पर, अपाचे को पुनरारंभ करना एक विकल्प नहीं है। –