ไม่สามารถดู index.php ของ Zend Framework 1.0 หลังจากตั้งค่าข้อกำหนด Apache/Host แล้ว

อัปเดต: เกิดข้อผิดพลาดต่อไปนี้ในบันทึกข้อผิดพลาดของ Apache...

[Sat Dec 08 16:41:39 2012] [error] [client 127.0.0.1] 
PHP Fatal error:  require_once(): 
Failed opening required 'Zend/Application.php' 
(include_path='/Library/WebServer/Documents/quickstart/library:.:/php/includes:/Users/markmcdonnell/Dropbox/Library/PHP/ZendFramework-1.12.0/library') 
in /Library/WebServer/Documents/quickstart/public/index.php on line 18

ฉันใช้ Mac OSX 10.8.2 (Mountain Lion) และฉันประสบปัญหาในการตั้งค่าและใช้งานเฟรมเวิร์ก Zend (เพียง QuickStart พื้นฐานเท่านั้น)

ฉันใช้อาปาเช่ 2.2.22

ไฟล์ localhost ของฉันสามารถเข้าถึงได้จาก /Library/WebServer/Documents

ฉันมี PHP 5.3.15 ทำงานเช่นกัน

ฉันได้สร้างโครงการใหม่ผ่านทางบรรทัดคำสั่ง (โดยใช้ไฟล์ zf.sh) ชื่อ 'quickstart' (ตามส่วนบนเว็บไซต์ Zend แนะนำ) และที่เก็บไว้ที่นี่: /Library/WebServer/Documents/quickstart

ฉันได้ปฏิบัติตามคำแนะนำอย่างเป็นทางการของเว็บไซต์ Zend และหนังสือออนไลน์เกี่ยวกับการติดตั้ง Zend แล้ว: http://www.survivethedeepend.com/zendframeworkbook/en/1.0/creating.a.local.domain.usingapache.virtual.hosts

ไฟล์ php.ini (/private/etc/php.ini) ของฉันได้รับการอัปเดตเพื่อรวมเส้นทางไปยังโฟลเดอร์ library ภายในไดเร็กทอรี ZendFramework...

include_path = ".:/php/includes:/Users/<home>/Dropbox/Library/PHP/ZendFramework-1.12.0/library"

ฉันได้อัปเดต /etc/apache2/httpd.conf ดังนั้นจึงรวม...

#
# Use name-based virtual hosting.
#
NameVirtualHost *:80

# Ensure "localhost" is preserved unchanged pointed
# to the default document root for our system.
<VirtualHost *:80>
    ServerName localhost
    DocumentRoot /Library/WebServer/Documents
</VirtualHost>

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *:80>
    ServerName quickstart.local
    DocumentRoot /Library/WebServer/Documents/quickstart/public

    SetEnv APPLICATION_ENV "development"

    <Directory /Library/WebServer/Documents/quickstart/public>
        DirectoryIndex index.php
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

...ฉันได้อัปเดต /etc/hosts ด้วย ดังนั้นมันจึงรวม...

127.0.0.1   localhost
127.0.0.1   quickstart.local

ฉันกำลังรีสตาร์ท Apache โดยใช้ sudo apachectl graceful (ฉันก็ใช้ sudo apachectl restart เช่นกัน)

ดังนั้นหากฉันลองเข้าถึง http://localhost/ แล้ว ฉันจะเห็นไดเร็กทอรี /Library/WebServer/Documents ของฉัน และฉันเห็นว่า PHP ยังคงทำงานอยู่โดยไม่มีปัญหา แต่ถ้าฉันพยายามเข้าถึง http://quickstart.local/ ฉันเพิ่งได้รับหน้าว่าง?

ใครช่วยแนะนำหน่อยได้ไหมว่าปัญหาคืออะไร สิ่งที่ฉันขาดหายไป และสิ่งที่ฉันสามารถทำได้เพื่อให้หน้า 'ยินดีต้อนรับ' เริ่มต้นแสดง

ฉันแน่ใจว่าฉันแค่คิดถึงคนเล็กๆ น้อยๆ แต่เห็นได้ชัดว่ามันทำให้เกิดปัญหามากพอที่หน้าพื้นฐานจะไม่แสดง

ขอบคุณ.

เครื่องหมาย


person Integralist    schedule 08.12.2012    source แหล่งที่มา
comment
คุณต้องอัปเดต include_path ใน php.ini ของคุณให้ชี้ไปที่โฟลเดอร์ที่มี ZendFramework อยู่   -  person Kamil Šrot    schedule 08.12.2012
comment
ฉันได้ทำอย่างนั้นแล้ว ดูเหมือนว่าวิธีแก้ปัญหาคือการมีโฟลเดอร์ ZendFramework อยู่ในไดเรกทอรีรากของ localhost! ไม่แน่ใจว่าทำไม แต่ไฟล์ ini ไม่สามารถไปตามเส้นทางไปยังโฟลเดอร์ Dropbox ได้ใช่ไหม   -  person Integralist    schedule 08.12.2012
comment
มันจะได้ผล แต่ไม่ใช่แนวทางปฏิบัติที่ดีที่สุด โดยปกติไลบรารีจะถูกเก็บไว้นอกรูทเอกสาร...   -  person Kamil Šrot    schedule 08.12.2012


คำตอบ (2)


สำหรับคนอื่นๆ ที่อาจติดตามเรื่องนี้มาเท่านั้น คำตอบของ Kamil ด้านบนจะใช้ได้ แต่จะเปิดช่องโหว่ด้านความปลอดภัยนอกการกำหนดค่าความปลอดภัยของ Apache ไม่เป็นไรตราบใดที่คุณรู้และมีความปลอดภัยอีกชั้นหนึ่งเหนือ Apache

อีกวิธีหนึ่งในการแก้ไขปัญหาคือการวาง ZendFramework ไว้ที่ไหนสักแห่งภายในลำดับชั้นของไดเร็กทอรีราก ชอบ: DocumentRoot/Library/WebServer/Documents/ZendFramework-1.12.0/library หรือ DocumentRoot/Library/WebServer/Documents/quickstart/public/ZendFramework-1.12.0/library เส้นทางใดๆ ที่อยู่ภายในไดเรกทอรีรากของเซิร์ฟเวอร์ Apache ของคุณ

person Max West    schedule 08.12.2012

อาจเป็นปัญหาการอนุญาตของผู้ใช้ระหว่างไฟล์ Zend และกระบวนการ Apache

เนื่องจากคุณสามารถสร้างโปรเจ็กต์โดยใช้ zf.sh ได้ ไฟล์ Zend จึงอยู่ที่นั่นอย่างชัดเจน แต่ความล้มเหลวที่คุณได้รับผ่าน Apache แสดงให้เห็นว่าไฟล์ Zend อาจไม่สามารถเข้าถึงได้ผ่านกระบวนการ Apache (นั่นคือผู้ใช้ที่กระบวนการ Apache ทำงาน)

$ chmod 0777 /Users/markmcdonnell/Dropbox/Library/PHP/ZendFramework-1.12.0/library

ทดสอบ.

คุณอาจได้รับสิทธิ์ที่กว้างขวางน้อยกว่ามาก - 0644 เป็นต้น - แต่ฉันยอมรับว่าฉันแย่มากในแง่มุมนั้น ;-)

person David Weinraub    schedule 08.12.2012