<?php
echo file_put_contents("/tmp/log.txt", "Hello world everyone.");
Kod ini sangat mudah dan ia menunjukkan kejayaan apabila dijalankan pada penyemak imbas dan baris arahan, seperti: 21
. Tetapi selepas pelayar dijalankan, /tmp/log.txt tidak wujud. Di bawah baris arahan, /tmp/log.txt telah berjaya dibuat (tiada masalah untuk ujian pengguna root dan apache). sangat keliru. . . . . . .
uname -r
: 3.10.0-514.2.2.el7.x86_64
Semuanya dipasang melalui yum install, yum install httpd php5
Direktori /tmp sepatutnya mempunyai kebenaran maksimum. Adakah tiada masalah kebenaran? Buka mesej ralat dan lihat mesej ralat
Mula-mula, sahkan kebenaran folder untuk membenarkan penulisan dan kemudian
Soalan pengguna? Dianggarkan bahawa anda adalah pengguna akar di bawah baris arahan, jadi pelaksanaan boleh berjaya. Semak untuk melihat sama ada direktori web anda tergolong dalam kumpulan pengguna lain dan kumpulan pengguna ini tidak mempunyai kebenaran membaca dan menulis pada direktori temp.
Adakah anda mempunyai kebenaran? ! !
Ia sepatutnya menjadi isu kebenaran. Ia juga tidak selamat untuk PHP untuk mengendalikan direktori tmp, jadi ia pasti tidak dibenarkan secara lalai.
Kenapa dikatakan tidak selamat? Kerana jika anda boleh menulis, anda mesti boleh membaca (untuk PHP, pada dasarnya tidak ada situasi di mana anda hanya boleh menulis tetapi tidak membaca tanpa menetapkan kebenaran)... Dalam kes ini, penggodam boleh membaca banyak maklumat
Ujian mudah dan kasar: chmod -R 777 /tmp
Kemudian lihat jika ia boleh ditulis.
Pelayar berjalan / merujuk kepada direktori akar laman web / merujuk kepada direktori akar pelayan Sila semak sama ada terdapat fail /tmp/log.txt dalam direktori akar laman web