Score:0

อะไรจะป้องกันไม่ให้ php-fpm (8.0.16) เขียนไปยังระบบไฟล์ที่ติดตั้ง NFS ได้

ธง rs

ฉันมีอินสแตนซ์ php-fpm (8.0.16) ที่ไม่สามารถเขียนไฟล์ไปยังการแชร์ NFS ฉันใช้สคริปต์ php อย่างง่ายสำหรับการทดสอบ:

<?php

ini_set('display_errors', 1);
ini_set('error_reporting', E_ALL);

$fp = fopen('test.txt', 'a');

fwrite($fp, 'ทดสอบ'); 

เมื่อรันผ่าน php-fpm ในไดเร็กทอรีที่เป็น NFS ร่วมกัน จะได้รับข้อผิดพลาดต่อไปนี้:

คำเตือน: fopen(test.txt): ไม่สามารถเปิดสตรีม: ระบบไฟล์แบบอ่านอย่างเดียวใน /path/to/nfs/share/test-write.php

อย่างไรก็ตาม รหัสต่อไปนี้:

<?php

ini_set('display_errors', 1);
ini_set('error_reporting', E_ALL);

$fp = fopen('/tmp/test.txt', 'a');

fwrite($fp, 'ทดสอบ');

ทำงานตามที่คาดไว้

สคริปต์ทำงานเมื่อรันจากบรรทัดคำสั่งเป็นผู้ใช้เดียวกันกับที่ใช้รัน php-fpm ทั้งในไดเร็กทอรีที่ใช้ร่วมกันของ NFS และใน /tmp นอกจากนี้ สคริปต์ยังทำงานตามที่คาดไว้ใน php เวอร์ชันก่อนหน้าผ่าน php-fpm

djdomi avatar
za flag
ดูเหมือนว่า www-data ไม่มีสิทธิ์เขียนไปยังอุปกรณ์ หรือขึ้นอยู่กับผู้ใช้ที่คุณตัดสินใจใช้และติดตั้ง นอกจากนี้ Apparmor ยังสามารถเล่นในปาร์ตี้ได้อีกด้วย
de flag
ตามข้อความแสดงข้อผิดพลาด วอลุ่ม NFS ถูกเอ็กซ์พอร์ตในโหมดอ่านอย่างเดียว
cplater avatar
rs flag
@kofemann ฉันได้ตัดสินโดยเขียนไปยังโวลุ่ม NFS ผ่าน CLI ฉันสามารถเรียกใช้ไฟล์ php เดียวกันกับ user:group apache:apache จาก php (cli) และใช้งานได้
Score:0
ธง rs

ในไฟล์ systemd php-fpm.service มีการตั้งค่า:

# ติดตั้งไดเร็กทอรี /usr, /boot และ /etc แบบอ่านอย่างเดียวสำหรับกระบวนการที่เรียกใช้โดยหน่วยนี้
ProtectSystem=เต็ม

นี่คือสิ่งที่ทำให้ php-fpm ไม่สามารถเขียนไปยังการแชร์ NFS ได้เนื่องจากติดตั้งในไดเร็กทอรีย่อยของ /usr

ดังกล่าว ที่นี่ คุณสามารถแทนที่สิ่งนี้ได้โดยใช้ systemctl แก้ไข php-fpm.service และเพิ่มเส้นทางที่ต้องการการเข้าถึงการเขียน:

[บริการ]
ReadWritePaths=\path\that\needs\write\access

โพสต์คำตอบ

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