PHP 5.3.1 अपरिभाषित प्रतीक: अपाचे स्टार्टअप पर OnUpdateLong त्रुटि


9

मैं इस सर्वर पर Ubuntu 8.04 चला रहा हूं। मेरे पास पैकेज मैनेजर के माध्यम से PHP 5.2 स्थापित था। मैंने इसे PHP 5.3.1 को हाथ से स्थापित करने के लिए हटा दिया। मैंने जैसे पैकेज बनाए

./configure --prefix=/opt/php --with-mysql --with-curl=/usr/bin --with-apxs2=/usr/bin/apxs2
make
make install

यह PHP 5.3.1 इन / ऑप्ट / php / स्थापित करता है

$ php -v
PHP 5.3.1 (cli) (built: Dec  7 2009 10:51:14) 
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies

हालांकि, जब मैं अपाचे शुरू करने की कोशिश करता हूं तो मुझे यह मिलता है।

 # /etc/init.d/apache2 restart
 * Restarting web server apache2       
  apache2: Syntax error on line 185 of /etc/apache2/apache2.conf: 
  Syntax error on line 1 of /etc/apache2/mods-enabled/php5.load: 
  Cannot load /usr/lib/apache2/modules/libphp5.so into server: 
  /usr/lib/apache2/modules/libphp5.so: undefined symbol: OnUpdateLong
                                                                     [fail]

किसी भी विचार इस त्रुटि के कारण क्या है? सभी संदर्भ जो मैं देख सकता हूं, उन्हें php4 या इस तरह के लिए php5 पैकेज बनाने के साथ करना होगा। इस मशीन पर PHP4 कभी नहीं लगाया गया है।

जवाबों:


11

वास्तव में, जेम्स हैकेट ने जो कहा वह कमोबेश मेरे लिए काम कर गया।

मेरी समस्या थी कि मैंने Apache स्थापित करने से पहले PHP का निर्माण किया था (मैंने नवीनतम ट्रंक से PHP का निर्माण किया था और APT के माध्यम से Apache2 स्थापित किया था)।

इसलिए जब मुझे त्रुटि का सामना करना पड़ा कि अपाचे को एक अपरिभाषित प्रतीक का सामना करना पड़ा (जो मॉड्यूल नहीं मिला है वह मनमाने ढंग से btw है।), मैंने निम्नलिखित किया:

  1. make distclean php स्रोत पर
  2. ./configure --prefix=/usr/local/php-5.3-svn --with-apxs2=/usr/bin/apxs2
  3. make && make install

और सब कुछ ठीक काम किया।

स्पष्ट रूप से कैप्टन मुझसे छिपा रहा था, निश्चित रूप से अगर आप बिना डिस्टेकल && कॉन्फ़िगर किए बिना रीमेक करते हैं, तो बस नए प्रतीकों को संकलित करें जो स्पष्ट रूप से पर्याप्त नहीं है; ;-)


3

मुझे भी यही समस्या थी और मैंने जो किया वह था मेरे php स्रोत निर्देशिका को हटाना, टारबॉल को फिर से निकालना और फिर से संकलित करना और सब कुछ ठीक काम करना।

मैंने पहले बिना apache के इस सिस्टम पर php इंस्टॉल किया था और तब मैंने अलग-अलग कॉन्फिगरेशन सेटिंग्स के साथ एक ही सोर्स डायरेक्टरी से php को रीइनस्टॉल करने की कोशिश की थी।


1

आपने php5 का निर्माण किया, लेकिन आपने Apache और php5 के बीच गोंद का पुनर्निर्माण नहीं किया। चूंकि आप mod_php5 का उपयोग कर रहे हैं, यह विफल (तार्किक) है।

आप Fastcgi के लिए php स्क्रिप्ट को चलाने में सक्षम हो सकते हैं (मुझे लगता है कि आपके द्वारा निर्मित php 5.3.1 ठीक है), लेकिन वैसे भी मैं आपको दूसरे तरीके से कार्य करने की सलाह देता हूं।

यह एक उत्पादन सर्वर पर हाथ से एक सॉफ्टवेयर बनाने के लिए बहुत बुरा है। इसके अलावा PHP5 सॉफ्टवेयर का एक बड़ा टुकड़ा है, आपको वास्तव में रखरखाव और सुरक्षा उद्देश्यों के लिए ऐसा नहीं करना चाहिए ।

इसे प्राप्त करने का सही तरीका, अगर आपको वास्तव में उस संस्करण की आवश्यकता है, तो पैकेज को वापस करना है। (हाँ, पैकेजिंग!)

इसके लिए थोड़ा पैकेजिंग ज्ञान और समय की आवश्यकता होती है। आप इसके साथ पैकेजिंग स्रोत प्राप्त कर सकते हैं: apt-get source php5बशर्ते आपके पास /etc/apt/sources.list में एक डीब-src स्रोत हो


यह प्रोडक्शन सर्वर नहीं है। यह सिर्फ हमारा देव सर्वर है और मैं यह पता लगाने की कोशिश कर रहा हूं कि क्या होगा, अगर हमारे सिस्टम में कुछ भी 5.3 php टूट जाएगा।
21

1
"यह एक उत्पादन सर्वर पर हाथ से सॉफ्टवेयर बनाने के लिए बहुत बुरा है। इसके अलावा PHP5 सॉफ्टवेयर का एक बड़ा टुकड़ा है, आपको वास्तव में रखरखाव और सुरक्षा उद्देश्यों के लिए ऐसा नहीं करना चाहिए।" अधिकांश वितरण पर यह अद्यतित रहने का एकमात्र तरीका है। उदाहरण के लिए, उबंटू केवल ५.२.१० है इसके भंडार में स्थिर है जो जून २०० ९ में वापस जारी किया गया था। व्यक्तिगत रूप से मुझे प्री-पैकेज का उपयोग करने के लिए सुरक्षा जोखिम अधिक लगता है क्योंकि उनके पास बहुत सारे अतिरिक्त सामान हैं जो आप में नहीं बन सकते हैं। जरूरत है और बाहर पट्टी कर सकते हैं यदि आप उन्हें खुद का निर्माण करते हैं। साथ ही आप अप-टू-डेट रख सकते हैं।
एंडी शेलम

1

Apache2 से zend_parse_paramater त्रुटि का अनुभव करने वाले लोगों के लिए, जब आप libphp5.so लोड कर रहे हैं:

: libphp5.so: अपरिभाषित प्रतीक: zend_parse_parameters

./configure आउटपुट पर एक नज़र डालें। यदि आपको एक संदेश कुछ इसी तरह से मिलता है:

कॉन्फ़िगर करें: चेतावनी: ज़ेंड / पीएचपी पार्सर्स के उत्थान के लिए समर्थित बाइसन संस्करण: 1.28 1.35 1.75 1.75 1.875 2.0 2.1 2.2 2.3 2.4 2.4.1 (पाया: कोई नहीं)।

बायसन स्थापित करने का प्रयास करें: sudo apt-get install bison

फिर distclean बनाते हैं ।/configure ... फिर Make -i इंस्टॉल करें

http://www.linuxforums.org/forum/redhat-fedora-linux-help/87975-configuring-php-work-apache.html


यदि आप किसी तरह से PHP स्रोत कोड को संशोधित कर चुके हैं तो केवल zend parsers का पुनर्निर्माण करना आवश्यक होना चाहिए। मैंने कभी भी किसी भी उत्पादन सर्वर पर बायसन स्थापित नहीं किया है और कभी कोई समस्या नहीं हुई।
एंडी शेलम

0

जैसा कि @zecrazytux ने संकेत दिया, क्या आपने उपयुक्त अपाचे-देव संकुल स्थापित किया था? PHP अच्छी तरह से उनके बिना बनाया जा सकता था, भले ही आपने यह बताया हो कि वे कहाँ थे। आपको ./configure आउटपुट को देखना होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.