suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Wie erteile ich PHP-Schreibberechtigung für ein Verzeichnis?

<p>Ich versuche, eine Datei mit PHP zu erstellen, aber es funktioniert nicht. Ich gehe davon aus, dass das daran liegt, dass es keinen Schreibzugriff hat (dieses Problem gab es schon einmal). Ich habe versucht zu testen, ob dies das Problem war, indem ich den Ordner mit chmod 0777 geändert habe, aber das führte letztendlich dazu, dass jedes Skript in diesem Verzeichnis eine 500-Fehlermeldung zurückgab, bis ich es wieder änderte. Wie gebe ich PHP Schreibzugriff auf mein Dateisystem, damit es Dateien erstellen kann? </p> <p>BEARBEITEN: Es wird auf Hostgator Shared Hosting mit Apache gehostet. </p> <p>Edit 2: Jemand hat nach dem Code gefragt: Der Code ist ein GD-Bildskript. Ich weiß, dass der Rest genauso funktioniert wie zuvor, als ich das Bild jedes Mal erstellt habe, wenn ich es aufgerufen habe. Jetzt versuche ich, sie beim Hinzufügen von neuem Text zu erstellen und in einem Ordner zu speichern. Meine Schreibzeile lautet: imagejpeg(null,$file,85);</p> <p>Ich habe auch eine Testdatei erstellt, um zu prüfen, ob es sich nur um ein kaputtes Skript handelt (meistens von tizag kopiert): http://gearboxshow.info/rkr/lesig.jpg/testfile.txt (Ich weiß nicht, ob/wie ich den Code hier richtig posten soll. Dies ist der Inhalt des PHP-Skripts, abzüglich der PHP-Tags.) < /p> <p> Es gibt 13,13,1 (separate Zeilen) zurück, es sieht also so aus, als ob es denkt, dass es etwas geschrieben hat, aber die testfile.txt ist leer (ich habe eine leere hochgeladen) oder existiert nicht (wenn ich sie lösche). Es)). </p> <p>Bearbeiten 3: Auf dem Server wird CentOS ausgeführt. </p>
P粉512363233P粉512363233444 Tage vor571

Antworte allen(2)Ich werde antworten

  • P粉376738875

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

    简单的三步解决方案


    第 1 步:确定 PHP 用户

    创建一个包含以下内容的 PHP 文件:

    <?php echo `whoami`; ?>

    将其上传到您的网络服务器。输出应类似于以下内容:

    www-data

    因此,PHP 用户是 www-data


    第 2 步:确定目录所有者

    接下来,通过命令行检查Web目录的详细信息:

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

    结果应类似于以下内容:

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

    因此,该目录的所有者是 exampleuser1


    第 3 步:将目录所有者更改为 PHP 用户

    然后,将Web目录的所有者更改为PHP用户:

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

    验证 Web 目录的所有者是否已更改:

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

    结果应类似于以下内容:

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

    至此,example-folder 的所有者已成功更改为 PHP 用户:www-data


    完成! PHP 现在应该能够写入该目录。

    Antwort
    0
  • P粉352408038

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

    一个简单的方法是让 PHP 首先创建目录本身。

    <?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');

    这可以为您省去权限方面的麻烦。

    Antwort
    0
  • StornierenAntwort