web-dev-qa-db-fra.com

Autorisation refusée lors de la création d'un nouveau fichier

Je pouvais créer un fichier avec php fopen (..) lorsque j'utilisais Ubuntu 12.04. Mais maintenant, je ne peux pas créer de fichier avec php, car je passe Ubuntu 14.04. Je peux ouvrir un fichier existant pour lire ou écrire. Mais je ne peux pas créer de nouveau fichier à cause d'une autorisation refusée.

fopen(../../../../../Desktop/file): failed to open stream: Permission denied in /var/www/html/createFolder.php on line 17
Cannot open file: ../../../../..//Desktop/file" error is occured.


$my_file = ".." . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . "home" . DIRECTORY_SEPARATOR . "username" . DIRECTORY_SEPARATOR . "Desktop" . DIRECTORY_SEPARATOR . "file";
$handle = fopen($my_file, 'w') or die('Cannot open file:  '.$my_file);
$data = 'New data line 1';
fwrite($handle, $data);
$new_data = "\n".'New data line 2';
fwrite($handle, $new_data);
1
Mert Özoğul

L'erreur se produit en raison d'un problème d'autorisations.

Vous souhaitez créer un fichier dans le répertoire du bureau de vos utilisateurs.

Votre script n'est pas exécuté par votre utilisateur il est exécuté par l'utilisateur d'apahce, qui est généralement www-data. Cet utilisateur n'a probablement pas l'autorisation de créer des fichiers dans le répertoire de base de votre utilisateur.

Par conséquent, vous devez autoriser l'utilisateur Apache à accéder en écriture à votre Desktop Director.

Remarque: C'est une mauvaise idée mais vous pouvez le faire de plusieurs manières.

1.Ajoutez l'utilisateur Apache à votre groupe d'utilisateurs.

2.Changez la permission de votre répertoire de bureau pour permettre à quiconque d'y écrire (probablement la pire idée).

3. Ajoutez-vous au groupe www-data et changez le propriétaire du groupe de votre dossier de bureau en www-data.

Soyez prudent avec l'une de ces techniques car elles ouvrent votre répertoire personnel à d'autres personnes.

Non lié: Pourquoi utiliser autant de ..? Juste utiliser et chemin absolu.

0
Dan

Vous devez disposer d'une autorisation pour créer le fichier dans ../../../../../Desktop.

Parce que le code php est exécuté avec privaliage utilisateur Apache.

Si vous le souhaitez, vous devez vérifier et modifier avec les commandes suivantes.

ls -l ../../../../../Desktop

Sudo chmod 777 ../../../../../Desktop

ou

Sudo chown xxx ../../../../../Desktop

le xxx est le nom d'utilisateur Apache.

0
xiaodongjie