PHP 5.3.1 สัญลักษณ์ที่ไม่ได้กำหนด: ข้อผิดพลาด OnUpdateLong บน Apache Startup


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 ใน / opt / 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

อย่างไรก็ตามเมื่อฉันพยายามเริ่ม Apache ฉันจะได้รับสิ่งนี้

 # /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]

แนวคิดใดที่ทำให้เกิดข้อผิดพลาดนี้ การอ้างอิงทั้งหมดที่ฉันเห็นจะเกี่ยวกับการสร้างแพ็คเกจ php5 สำหรับ php4 หรือสิ่งที่คล้ายกัน PHP4 ไม่เคยติดตั้งบนเครื่องนี้

คำตอบ:


11

จริงๆแล้วสิ่งที่เจมส์แฮ็คเก็ตต์พูดนั้นมากหรือน้อยกว่าสิ่งที่ได้ผลสำหรับฉัน

ปัญหาของฉันคือฉันสร้าง PHP ก่อนที่จะติดตั้ง Apache (ฉันสร้าง PHP จาก trunk ล่าสุดและติดตั้ง Apache2 ผ่าน APT)

ดังนั้นเมื่อฉันพบข้อผิดพลาดที่ apache พบสัญลักษณ์ที่ไม่ได้กำหนด (โมดูลที่ไม่พบคือ 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 ของฉันดึงไฟล์ tarball อีกครั้งแล้วคอมไพล์อีกครั้งและทุกอย่างทำงานได้ดี

ก่อนหน้านี้ฉันได้ติดตั้ง php บนระบบนี้โดยไม่ใช้ apache จากนั้นฉันได้ลองติดตั้ง php ใหม่จากไดเรกทอรีแหล่งเดียวกันด้วยการตั้งค่าการตั้งค่าที่แตกต่างกัน


1

คุณสร้าง php5 แต่คุณไม่ได้สร้างกาวระหว่าง apache และ php5 อีกครั้ง เนื่องจากคุณกำลังใช้ mod_php5 มันล้มเหลว (ตรรกะ)

คุณอาจจะสามารถเรียกใช้สคริปต์ php ขอบคุณ fastcgi (ฉันถือว่า php ที่สร้างขึ้นด้วยมือ 5.3.1 ของคุณก็โอเค) แต่ฉันขอแนะนำให้คุณทำในลักษณะอื่น

มันค่อนข้างน่ารังเกียจที่จะสร้างซอฟต์แวร์ด้วยมือบนเซิร์ฟเวอร์ที่ใช้งานจริง ยิ่งไปกว่านั้น PHP5 เป็นซอฟต์แวร์ชิ้นใหญ่ที่คุณไม่ควรทำเพื่อการบำรุงรักษาและความปลอดภัย

วิธีที่ถูกต้องในการบรรลุเป้าหมายนี้หากคุณต้องการเวอร์ชันนั้นจริงๆคือการแบ็คแพ็กเกจ (ใช่บรรจุภัณฑ์!)

ต้องการความรู้ด้านบรรจุภัณฑ์และเวลาเล็กน้อย คุณสามารถรับแหล่งบรรจุภัณฑ์ด้วย: apt-get source php5หากคุณมีแหล่ง deb-src ใน /etc/apt/sources.list


ไม่ใช่เซิร์ฟเวอร์ที่ใช้งานจริง มันเป็นแค่เซิร์ฟเวอร์ dev ของเราและฉันกำลังพยายามหาว่าอะไรที่ php 5.3 จะทำลายในระบบของเรา
baudtack

1
"ช่างเป็นเรื่องที่น่ารังเกียจที่จะสร้างซอฟต์แวร์ด้วยมือบนเซิร์ฟเวอร์ที่ใช้งานจริงนอกจากนี้ PHP5 เป็นซอฟต์แวร์ชิ้นใหญ่คุณไม่ควรทำเช่นนั้นเพื่อการบำรุงรักษาและความปลอดภัย" ในการแจกแจงส่วนใหญ่เป็นวิธีเดียวที่จะติดตามข้อมูลล่าสุด ยกตัวอย่างเช่น Ubuntu มี 5.2.10 ที่เสถียรในที่เก็บซึ่งเปิดตัวเมื่อเดือนมิถุนายน 2552 โดยส่วนตัวแล้วฉันพบว่ามีความเสี่ยงด้านความปลอดภัยมากกว่าที่จะใช้ pre-packages เนื่องจากมีสิ่งพิเศษมากมายที่คุณอาจไม่ได้ทำ ต้องการและสามารถตัดออกหากคุณสร้างด้วยตัวเอง ยิ่งไปกว่านั้นคุณสามารถติดตามข่าวสารล่าสุดได้
Andy Shellam

1

สำหรับผู้ที่คุณพบข้อผิดพลาด zend_parse_paramater จาก apache2 ขณะที่โหลด libphp5.so:

/apache2.conf: ข้อผิดพลาดทางไวยากรณ์ในบรรทัดที่ 1 ของ /etc/apache2/mods-enabled/php5.load: ไม่สามารถโหลด /usr/lib/apache2/modules/libphp5.so ไปยังเซิร์ฟเวอร์: / usr / lib / apache2 / modules / libphp5.so: สัญลักษณ์ที่ไม่ได้กำหนด: zend_parse_parameters

ลองดูที่. / config เอาท์พุท หากคุณได้รับข้อความว่าสิ่งที่คล้ายกับ:

กำหนดค่า: คำเตือน: รุ่นกระทิงที่ได้รับการสนับสนุนสำหรับการสร้างตัวแยกวิเคราะห์ Zend / PHP: 1.28 1.35 1.75 1.875 2.0 2.1 2.2 2.3 2.4 2.4.1 (พบ: ไม่มี)

ลองติดตั้ง bison: sudo apt-get install bison

จากนั้นทำ distclean แล้ว. / config ... จากนั้นให้ทำการติดตั้ง -i

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


คุณควรสร้างตัวแยกวิเคราะห์ zend ใหม่เฉพาะเมื่อคุณแก้ไขซอร์สโค้ด PHP ด้วยวิธีใดวิธีหนึ่ง ฉันไม่เคยติดตั้งกระทิงบนเซิร์ฟเวอร์ที่ใช้งานจริงและไม่เคยมีปัญหา
Andy Shellam

0

ตามที่ @zecrazytux ระบุไว้คุณติดตั้งแพ็กเกจ apache-dev ที่เหมาะสมหรือไม่? PHP สามารถสร้างได้โดยไม่มีพวกเขาแม้ว่าคุณจะบอกว่าพวกเขาอยู่ที่ไหน คุณต้องดูที่เอาต์พุต. / config

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.