Bagaimana untuk memberi kebenaran menulis PHP ke direktori?
P粉512363233
P粉512363233 2023-08-27 15:25:11
0
2
580
<p>Saya cuba mencipta fail menggunakan PHP tetapi ia tidak berfungsi. Saya mengandaikan ini kerana ia tidak mempunyai akses tulis (pernah menjadi masalah ini sebelum ini). Saya cuba menguji sama ada ini adalah masalah oleh chmod 0777 folder, tetapi ini akhirnya menyebabkan setiap skrip dalam direktori itu mengembalikan mesej ralat 500 sehingga saya menukarnya kembali. Bagaimanakah saya boleh memberikan akses tulis PHP kepada sistem fail saya supaya ia boleh mencipta fail? </p> <p>EDIT: Ia dihoskan pada pengehosan kongsi Hostgator menggunakan Apache. </p> <p>Edit 2: Seseorang bertanya tentang kod: Kod tersebut ialah skrip imej GD. Saya tahu selebihnya berfungsi seperti sebelum ini apabila saya mencipta imej setiap kali saya memanggilnya. Sekarang saya cuba menciptanya apabila menambah teks baharu dan menyimpannya ke dalam folder. Garis tulis saya ialah: imagejpeg(null,$file,85);</p> <p>Saya juga mencipta fail ujian untuk menyemak sama ada ia hanya skrip yang rosak (kebanyakannya disalin daripada tizag): http://gearboxshow.info/rkr/lesig.jpg/testfile.txt (Saya tidak tahu sama ada/bagaimana untuk menghantar kod di sini dengan betul. Ini adalah kandungan skrip PHP, tolak tag PHP.) < /p> <p> Ia mengembalikan 13,13,1 (baris berasingan), jadi ia kelihatan seperti ia menulis sesuatu, tetapi testfile.txt kosong (saya memuat naik yang kosong), atau tidak wujud (jika saya memadamkan ia)). </p> <p>Edit 3: Pelayan sedang menjalankan CentOS. </p>
P粉512363233
P粉512363233

membalas semua(2)
P粉376738875

Penyelesaian tiga langkah mudah


Langkah 1: Kenal pasti Pengguna PHP

Buat fail PHP dengan kandungan berikut:

<?php echo `whoami`; ?>

Muat naik ke pelayan web anda. Output sepatutnya menyerupai yang berikut:

www-data

Jadi, pengguna PHP adalah www-data.


Langkah 2: Tentukan Pemilik Direktori

Seterusnya, semak butiran direktori web melalui baris arahan:

ls -dl /var/www/example.com/public_html/example-folder

Hasilnya sepatutnya kelihatan seperti berikut:

drwxrwxr-x 2 exampleuser1 exampleuser2 4096 Mar 29 16:34 example-folder

Oleh itu, pemilik direktori ini ialah exampleuser1.


Langkah 3: Tukar Pemilik Direktori kepada Pengguna PHP

Kemudian, tukar pemilik direktori web kepada pengguna PHP:

sudo chown -R www-data /var/www/example.com/public_html/example-folder

Sahkan bahawa pemilik direktori web telah berubah:

ls -dl /var/www/example.com/public_html/example-folder

Hasilnya sepatutnya kelihatan seperti berikut:

drwxrwxr-x 2 www-data exampleuser2 4096 Mar 29 16:34 example-folder

Pada ketika ini, pemilik example-folder telah berjaya ditukar kepada pengguna PHP: example-folder 的所有者已成功更改为 PHP 用户:www-data.


Selesai! PHP kini sepatutnya boleh menulis ke direktori.

P粉352408038

Cara mudah ialah membenarkan PHP mencipta direktori itu sendiri terlebih dahulu.

<?php
 $dir = 'myDir';

 // create new directory with 744 permissions if it does not exist yet
 // owner will be the user/group the PHP script is run under
 if ( !file_exists($dir) ) {
     mkdir ($dir, 0744);
 }

 file_put_contents ($dir.'/test.txt', 'Hello File');

Ini menjimatkan masalah anda dengan kebenaran.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan