Score:0

ข้อผิดพลาด NGINX: open_baseir

ธง cn

ฉันได้รับข้อผิดพลาดนี้จากเซิร์ฟเวอร์ NGINX เมื่อฉันเรียกใช้สคริปต์ใน Prestashop ฉันคิดว่านี่เป็นสิ่งที่ฉันสามารถแก้ไขได้ในการกำหนดค่า NGINX หรือบางอย่าง แต่ฉันต้องการความช่วยเหลือเพื่อบอกฉันว่าต้องทำอย่างไร

คำเตือน: file_exists(): ข้อ จำกัด ของ open_basedir มีผลบังคับใช้ 
ไฟล์ (/www/wwwroot/panel_ssl_site/../app/etc/env.php) ไม่ได้อยู่ภายใน 
เส้นทางที่อนุญาต: (/www/wwwroot/panel_ssl_site/) ใน
/www/wwwroot/panel_ssl_site/bridge_i15GpcsW.php ออนไลน์ 832
  • ฉันจะแก้ปัญหานี้ได้อย่างไร

ขอบคุณ,

ปีเตอร์

Score:0
ธง za

PHP open_baseir.php คืออะไร

มันจำกัดไฟล์ที่ PHP สามารถเข้าถึงได้ตามที่ระบุ ไดเร็กทอรีทรี รวมทั้งตัวไฟล์ด้วย คำสั่งนี้ ไม่ใช่ ได้รับผลกระทบ ไม่ว่าจะเปิดหรือปิด Safe Mode

เมื่อสคริปต์พยายามเข้าถึงระบบไฟล์ เช่น ใช้ รวมถึงหรือ fopen() มีการตรวจสอบตำแหน่งของไฟล์ เมื่อ ไฟล์อยู่นอกไดเร็กทอรีทรีที่ระบุ PHP จะปฏิเสธ เข้าถึงมัน ลิงก์สัญลักษณ์ทั้งหมดได้รับการแก้ไข ดังนั้นจึงเป็นไปไม่ได้ หลีกเลี่ยงข้อจำกัดนี้ด้วย symlink หากไม่มีไฟล์อยู่ ไม่สามารถแก้ไข symlink และชื่อไฟล์ถูกเปรียบเทียบกับ (a แก้ไขแล้ว) open_baseir

open_baseir สามารถส่งผลกระทบมากกว่าแค่ฟังก์ชั่นระบบไฟล์ สำหรับ ตัวอย่าง ถ้ากำหนดค่า MySQL ให้ใช้ไดรเวอร์ mysqlnd ให้โหลดข้อมูล INFILE จะได้รับผลกระทบจาก open_baseir ขยายออกไปมากแล้ว การทำงานของ PHP ใช้ open_baseir ด้วยวิธีนี้

ค่าพิเศษ. ระบุว่าไดเร็กทอรีการทำงานของสคริปต์ จะถูกใช้เป็นไดเร็กทอรีฐาน อย่างไรก็ตาม นี่เป็นเรื่องเล็กน้อย อันตรายเนื่องจากไดเร็กทอรีการทำงานของสคริปต์สามารถเปลี่ยนแปลงได้ง่าย ด้วย chdir()

ใน httpd.conf สามารถปิด open_basedir ได้ (เช่น สำหรับ virtual โฮสต์) เช่นเดียวกับคำสั่งการกำหนดค่าอื่น ๆ ด้วย "php_admin_value open_baseir ไม่มี"

ภายใต้ Windows แยกไดเร็กทอรีด้วยเครื่องหมายอัฒภาค อื่น ๆ ทั้งหมด ระบบ คั่นไดเร็กทอรีด้วยเครื่องหมายทวิภาค ในฐานะโมดูล Apache ตอนนี้เส้นทาง open_basedir จากไดเร็กทอรีหลักจะทำงานโดยอัตโนมัติ รับการถ่ายทอด.

ข้อจำกัดที่ระบุด้วย open_basedir คือชื่อไดเร็กทอรี ไม่ใช่ a คำนำหน้า

ค่าเริ่มต้นคืออนุญาตให้เปิดไฟล์ทั้งหมด

อ้างอิง PHP.NET, 1

บทสรุป

คุณใช้ open_baseir และคุณไม่ได้อัปเดตเส้นทาง นอกจากนี้ ฉันเชื่อว่าคุณควรถามคำถามนี้กับ Superuser เนื่องจากหลักฐานระบุว่าคุณไม่ได้ใช้สภาพแวดล้อมที่เกี่ยวข้องกับธุรกิจ

php.ini (บนเดเบียน 10)

; open_baseir หากตั้งค่าไว้ จะจำกัดการทำงานของไฟล์ทั้งหมดไว้ที่ไดเร็กทอรีที่กำหนด
; และด้านล่าง คำสั่งนี้เหมาะสมที่สุดหากใช้ในแต่ละไดเร็กทอรี
; หรือไฟล์คอนฟิกูเรชันเว็บเซิร์ฟเวอร์ต่อ virtualhost
; หมายเหตุ: ปิดใช้งานแคชของเส้นทางจริง
; http://php.net/open-basedir
;open_baseir =

ตัวอย่างจากด้านบนคือการตั้งค่า DEFAULT บน Debian 10 ซึ่งโดยปกติจะเป็นค่าเริ่มต้นบน php.net ด้วย ซึ่งหมายความว่าคุณได้เปลี่ยนมันเช่นกัน ด้วยตนเอง. หรือสิ่งที่ฉันเชื่อ เนื่องจากชื่อพาธรวม "panel_ssl_site" คือฉันคิดว่าคุณกำลังใช้ Admin-Panel และสิ่งนี้ทำให้คำถามนี้เข้าสู่ OFF-TOPIC อย่างไรก็ตาม แผงการดูแลระบบทุกแผงควรเปลี่ยนการตั้งค่านี้ได้เช่นกัน ดูข้อมูลอ้างอิง StackOverflow ไปที่ปัญหาเดียวกัน

Michael Hampton avatar
cz flag
ฉันไม่เห็นสิ่งใดที่นี่เพื่อระบุว่านี่ไม่ใช่สภาพแวดล้อมทางธุรกิจ และควรไปที่ [su]
djdomi avatar
za flag
@MichaelHampton /www/wwwroot/panel_ssl_site เป็นค่าเริ่มต้นของ [AAPanel](https://www.aapanel.com/index.html) นั่นคือเหตุผลที่ฉันเดาว่ามันไม่ได้ใช้สำหรับการโฮสต์แบบมืออาชีพ
Michael Hampton avatar
cz flag
โอ้ ใหม่ฉันไม่เคยได้ยิน! เรามีเหตุผลใกล้เคียงโดยเฉพาะสำหรับแผงควบคุมการโฮสต์เว็บจำนวนมาก เช่น cPanel, Plesk เป็นต้น เพื่อให้ดูเหมาะสมกว่า
djdomi avatar
za flag
@MichaelHampton ไม่มีใครหยุดที่จะเรียนรู้สิ่งใหม่ๆ จริงไหม? ;) แต่ดูเหมือนว่า Peng58 จะหายไปเนื่องจากไม่มีการตอบกลับ

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา