web-dev-qa-db-fra.com

la fonction php file_put_contents ne fonctionne pas

Pourquoi file_put_contents refuserait-il de travailler pour le code suivant?

$f = file_put_contents("files/r.js", "Some text here");

if ($f) print 1;
else print 0;
27
steve

Cela pourrait être un problème de permission

Le répertoire /files est-il chmodé à 777? Parfois, php ne vous permet pas d'accéder aux répertoires s'ils n'ont pas assez de permission. Je ne sais pas sur les erreurs en blanc cependant.

Essayez de voir s'il dispose d'autorisations suffisantes. Sinon, définissez-le sur 777 et essayez-le.

39
Famver Tags

Utilisez-vous le chemin complet sur le système de fichiers ou essayez-vous d'utiliser l'URI? Je pense que cette fonction PHP s'attend à ce que vous donniez le chemin car le fichier se trouve sur le système de fichiers.

Les chemins relatifs devraient bien se passer. 

Vous devrez peut-être vous assurer que le fichier existe et que ses autorisations sont définies sur 777. Parfois, j'ai constaté qu'il ne suffisait pas de définir simplement les autorisations de répertoire sur 777, mais que le fichier devait déjà exister.

3
jmort253

Nous avons connu cela, nécessitant une solution de contournement (indépendamment de la méthode, des autorisations et de tout autre élément mentionné ici). Lorsque tous les autres correctifs ont échoué, nous avons découvert qu'il pouvait être lié à des restrictions créées par SELinux.

1
designgroop

Si vous utilisez Windows, la solution suivante a parfaitement fonctionné sous Windows 10 sous PHP 5.5.38.

Si vous rencontrez ce problème sous Windows/IIS, procédez comme suit:

  1. Accédez au dossier dans lequel vous essayez d'écrire, cliquez dessus avec le bouton droit de la souris, puis sélectionnez Propriétés. 
  2. Sélectionnez l'onglet Sécurité 
  3. Cliquez sur Modifier 
  4. Cliquez sur Ajouter 
  5. Cliquez sur Avancé 
  6. Cliquez sur Rechercher maintenant 
  7. Dans la liste des utilisateurs, sélectionnez IUSR et cliquez sur OK. 
  8. Cliquez à nouveau sur OK. 
  9. L'IUSR sera affiché dans la case du haut intitulée 'Groupe de noms d'utilisateur' 
  10. Sélectionnez IUSR et accordez les autorisations nécessaires dans la vue "Autorisations pour BATCH". 
  11. Cliquez sur Appliquer et vous avez terminé. 

Les étapes peuvent être légèrement différentes pour différentes versions de Windows. Cela s’applique également à ASP.NET, bien que je pense que les utilisateurs que vous ajoutez sont les utilisateurs du réseau (utilisateurs du RÉSEAU ET OR SERVICE RÉSEAU) ainsi que de l’IUSR.

0
user2288580