Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk memberi kebenaran menulis PHP ke direktori?

<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粉512363233P粉512363233391 hari yang lalu518

membalas semua(2)saya akan balas

  • P粉376738875

    P粉3767388752023-08-28 09:42:11

    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.

    balas
    0
  • P粉352408038

    P粉3524080382023-08-28 09:07:16

    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.

    balas
    0
  • Batalbalas