ความแตกต่าง PHP ระหว่างเทอร์มินัลและเบราว์เซอร์

มี Neo4J ติดตั้งอยู่บน Ubuntu ของฉัน และฉันกำลังเรียกใช้โค้ดทดสอบ มันทำงานได้อย่างสมบูรณ์แบบเมื่อโค้ดทำงานบนเทอร์มินัลเช่น:

root@ekin-Inspiron-1090:/var/www# php neo.php
home: demolished
name: Arthur Dent

แต่เมื่อมันมาถึงการทำงานบนเบราว์เซอร์เช่น localhost/neo.php มันทำให้เกิดข้อผิดพลาดร้ายแรงและหยุดทำงาน

Warning: require(phar://neo4jphp.phar): failed to open stream: operation failed in /var/www/neo.php on line 4 Fatal error: require(): Failed opening required 'phar://neo4jphp.phar' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/neo.php on line 4 

ฉันไม่คิดว่ามันจะเป็นอะไรกับ Neo4J หรือไดรเวอร์ PHP ของมันจริงๆ เหตุผลควรเป็นอย่างไร?

แก้ไข: อย่างไรก็ตาม มีไฟล์ php.ini สองไฟล์; ฉันคิดว่าอันหนึ่งสำหรับ apache และอีกอันสำหรับบรรทัดคำสั่ง ฉันตรวจสอบทั้งคู่แล้วและเส้นทางส่วนขยายของ phar ก็เหมือนกัน นอกจากนี้ยังไม่มีการตั้งค่า include_path ในทั้งสองอย่าง


person gzg    schedule 11.07.2012    source แหล่งที่มา
comment
มันอาจจะบอกว่าคุณไม่มีสิทธิ์เข้าถึงไฟล์   -  person Cole Johnson    schedule 11.07.2012
comment
บรรทัดคำสั่งทำงานภายใต้รหัสผู้ใช้ของคุณ apache ทำงานภายใต้รหัสผู้ใช้ของตัวเอง ตรวจสอบให้แน่ใจว่าผู้ใช้ apache สามารถเข้าถึงไฟล์ phar   -  person Marc B    schedule 11.07.2012
comment
ดูเหมือนว่าจะเป็นปัญหาเกี่ยวกับการอนุญาตเนื่องจากตัวอย่างแสดงผู้ใช้ที่ทำงานเป็น root   -  person SilverSnake    schedule 11.07.2012
comment
@MarcB ฉันจะเปลี่ยนการอนุญาตของผู้ใช้ apache เป็นไฟล์ phar ได้อย่างไร   -  person gzg    schedule 11.07.2012
comment
@MarcB ขอบคุณมาก! ฉันพยายามอย่างหนักเพื่อแก้ไขปัญหานี้มาเป็นเวลา 3 วันแล้ว ฉันให้ผู้ใช้ apache ของฉัน (www-data) เพื่อเข้าถึง /var/www และมันแก้ไขได้   -  person gzg    schedule 12.07.2012


คำตอบ (1)


มันเป็นข้อผิดพลาดในการอนุญาต Apache ทำงานภายใต้ผู้ใช้ของตัวเอง ดังนั้นคุณต้องให้ผู้ใช้ apache เพื่อเข้าถึงโฟลเดอร์ www

person user2843016    schedule 03.10.2013