Maison  >  Questions et réponses  >  le corps du texte

Comment donner à PHP l’autorisation d’écriture sur un répertoire ?

<p>J'essaie de créer un fichier en utilisant PHP mais cela ne fonctionne pas. Je suppose que c'est parce qu'il n'a pas d'accès en écriture (ce problème a déjà eu lieu). J'ai essayé de tester si c'était le problème en chmod 0777 le dossier, mais cela a fini par amener chaque script de ce répertoire à renvoyer un message d'erreur 500 jusqu'à ce que je le modifie à nouveau. Comment puis-je donner à PHP un accès en écriture à mon système de fichiers afin qu'il puisse créer des fichiers ? </p> <p>EDIT : il est hébergé sur l'hébergement partagé Hostgator à l'aide d'Apache. </p> <p>Edit 2 : quelqu'un a posé des questions sur le code : Le code est un script d'image GD. Je sais que le reste fonctionne comme avant lorsque je créais l'image à chaque fois que je l'appelais. Maintenant, j'essaie de les créer lors de l'ajout d'un nouveau texte et de les enregistrer dans un dossier. Ma ligne d'écriture est : imagejpeg(null,$file,85);</p> <p>J'ai également créé un fichier de test pour vérifier s'il ne s'agissait que d'un script cassé (principalement copié depuis tizag) : http://gearboxshow.info/rkr/lesig.jpg/testfile.txt (Je ne sais pas si/comment publier le code ici correctement. C'est le contenu du script PHP, moins les balises PHP.) < /p> <p> Il renvoie 13,13,1 (lignes séparées), donc on dirait qu'il pense avoir écrit quelque chose, mais le testfile.txt est vide (j'en ai téléchargé un vide) ou n'existe pas (si je supprime il)). </p> <p>Edit 3 : Le serveur exécute CentOS. </p>
P粉512363233P粉512363233391 Il y a quelques jours517

répondre à tous(2)je répondrai

  • P粉376738875

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

    Une solution simple en trois étapes


    Étape 1 : Identifier l'utilisateur PHP

    Créez un fichier PHP avec le contenu suivant :

    <?php echo `whoami`; ?>

    Téléchargez-le sur votre serveur Web. Le résultat devrait ressembler à ce qui suit :

    www-data

    Donc, les utilisateurs PHP le sont www-data.


    Étape 2 : Déterminer le propriétaire de l'annuaire

    Ensuite, vérifiez les détails du répertoire web via la ligne de commande :

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

    Le résultat devrait ressembler à ce qui suit :

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

    Par conséquent, le propriétaire de cet annuaire est exampleuser1.


    Étape 3 : Changer le propriétaire du répertoire en utilisateur PHP

    Ensuite, remplacez le propriétaire du répertoire Web par l'utilisateur PHP :

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

    Vérifiez que le propriétaire de l'annuaire web a changé :

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

    Le résultat devrait ressembler à ce qui suit :

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

    À ce stade, le propriétaire de example-folder a été remplacé avec succès par l'utilisateur PHP : example-folder 的所有者已成功更改为 PHP 用户:www-data.


    Fait ! PHP devrait maintenant pouvoir écrire dans le répertoire.

    répondre
    0
  • P粉352408038

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

    Un moyen simple consiste à laisser PHP créer d’abord le répertoire lui-même.

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

    Cela vous évite des problèmes avec les autorisations.

    répondre
    0
  • Annulerrépondre