Bagaimana membuat folder selalu dapat ditulis oleh apache?

0

Saya ingin membuat folder selalu dapat ditulis oleh PHP.

Saya mengubah izin folder sementara untuk 777, tetapi konten folder diunggah oleh pengguna ftp, jadi setiap kali saya jalankan kembali skrip saya mendapatkan ini:

Warning: file_get_contents(/var/www/html/.../file.txt): failed to open stream: Permission denied in /var/www/html/.../autoimport.php on line 25

Hal yang sama terjadi pada saya dalam skrip ini, di mana saya menunjukkan konten error.log. Saya mengubahnya ke 777 tetapi ketika itu dihasilkan kembali saya kehilangan akses lagi.

Warning: fopen(/var/log/apache2/error.log): failed to open stream: Permission denied in /var/www/html/admin/errorlog.php on line 48
Could not get lines from file - /var/log/apache2/error.log
pengguna1532587
sumber
Apa izinnya /var/log/apache2/error.log?
Ramhound
-rw-r ----- 1 root adm 75430 20 Nov 12:50 error.log
user1532587

Jawaban:

1

Cara saya biasanya melakukan ini dalam pengaturan server saya adalah membuat grup untuk situs web, kemudian menggunakan kombinasi setgid dan umask untuk memastikan bahwa file tetap dapat ditulisi oleh aplikasi yang saya inginkan. Panduan langkah demi langkah di bawah ini:

1 / Buat grup baru untuk situs web Anda:

$ sudo groupadd web-grp

2 / Tambahkan pengguna yang dijalankan server web ke grup:

$ sudo gpasswd -a www-data web-grp

3 / chown direktori dan file yang Anda inginkan server memiliki akses ke:

$ sudo chown -R :web-grp /path/to/website

4 / Tetapkan bit gid dan izin lainnya pada direktori tersebut:

$ sudo chmod -R ug+rw /path/to/website
$ find /path/to/website -type d -exec chmod g+xs {} \;

5 / Atur umask program ftp Anda ke 002. Ini akan tergantung pada klien ftp dan server Anda, cari di sekitar untuk mencari tahu bagaimana melakukan ini untuk pengaturan khusus Anda.

6 / Mulai ulang server web Anda untuk mengambil izin grup baru:

$ sudo service apache2 restart

Yang menarik di sini adalah setgidbit pada direktori tersebut akan menyebabkan file baru yang dibuat di direktori memiliki grup yang sama secara default. Ini berarti Anda tidak memerlukan 777izin — yang berarti Anda memiliki lebih banyak keamanan serta sistem yang harus terus bekerja.

Bagian umaskitu juga penting. File baru akan memiliki bit izin di umaskdilucuti, jadi jika Anda umaskadalah 022, file baru tidak akan kelompok ditulis, dan hal-hal tidak akan bekerja dengan baik.

Saya telah menggunakan pengaturan ini dengan sangat sukses selama beberapa tahun sekarang.

ryanmce
sumber