web-dev-qa-db-fra.com

PHP fopen () Erreur: échec d'ouverture du flux: autorisation refusée

J'apprends à écrire un plugin WordPress. J'ai besoin d'aide pour écrire des données dans un fichier XML. Je suis sur ma machine locale, un Mac exécutant MAMP. J'ai PHP 5.2.13. Dans mon plugin, j'ai:

$file_handle = fopen('markers.xml', 'w');
$stringdata = "Test Info";
fwrite($file_handle, $stringdata);
fclose($file_handle);

L'exécution de ce qui précède me donne l'erreur suivante:

Avertissement: fopen (markers.xml) [function.fopen]: échec de l'ouverture du flux: autorisation refusée dans /Users/my_name/Sites/my_site/wp-content/plugins/my_plugin_folder/my_plugin_main_file.php sur la ligne 73

Avertissement: fwrite (): l'argument fourni n'est pas une ressource de flux valide dans /Users/my_name/Sites/my_site/wp-content/plugins/my_plugin_folder/my_plugin_main_file.php à la ligne 75

Avertissement: fclose (): l'argument fourni n'est pas une ressource de flux valide dans /Users/my_name/Sites/my_site/wp-content/plugins/my_plugin_folder/my_plugin_main_file.php sur la ligne 76

J'ai essayé d'utiliser le chemin absolu dans la ligne $ file_handle: http: //my_site/wp-content/plugins/my_plugin_folder/markers.xml . Mais cela n'a pas fonctionné.

J'ai également essayé de modifier les autorisations sur markers.xml comme suit:

(Moi): Lecture et écriture (inconnu): Lecture uniquement pour tout le monde: Lecture et écriture

Pour une raison quelconque, mon Mac ne me laisserait pas changer (inconnu) en lecture et écriture. Je ne sais pas si cela fait une différence. J'ai fait un clic droit sur le fichier et sélectionné 'Get Info' afin de changer les autorisations.

Dans phpInfo (), j'ai:

"Enregistré PHP Streams https, ftps, compress.zlib, compress.bzip2, php, fichier, données, http, ftp"

Un paramètre WordPress cause le problème? Ou est-ce simplement un problème PHP?

Des suggestions sur la façon de résoudre ce problème?

Je vous remercie.

18
Laxmidi

Vous devrez peut-être modifier les autorisations en tant qu'administrateur. Ouvrez le terminal sur votre Mac, puis ouvrez le répertoire dans lequel se trouve markers.xml. Tapez ensuite:

Sudo chmod 777 markers.xml

Un mot de passe peut vous être demandé. De plus, il pourrait s'agir des répertoires qui ne permettent pas un accès complet. Je ne connais pas WordPress, vous devrez donc peut-être modifier l'autorisation de chaque répertoire vers le haut dans le répertoire mysite.

28
Chris