[php] erreur fonction copy
Résolu
28_seb
Messages postés
84
Date d'inscription
Statut
Membre
Dernière intervention
-
P@t@ch0n Messages postés 565 Date d'inscription Statut Membre Dernière intervention -
P@t@ch0n Messages postés 565 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai une erreur qui semble bête mais je n'arrive pas à la résoudre !.
J'essaye de copier des images qui se trouvent sur un site afin de les avoir sur mon serveur (je prépare un lecteur RSS). J'ai pensé à la fonction copy().
donc j'essaye en local mais ca ne marche pas, je suis sous fedora, et j'ai l'erreur suivante :
Warning: copy(test.txt.bak) [function.copy]: failed to open stream: Permission denied in /var/www/html/php/test/copy.php on line 5
j'ai changé les droits du repertoire test et du fichier test.txt en 777 mais rien n'y fait.
Y'a-t-il un truc que j'ai oublié de faire.
P.S : J'ai testé que un serveur easyphp sous windows et ca merche en local !
Merci pour votre aide.
Mon code tt simple :
<?php
$file = 'test.txt';
$newfile = 'test.txt.bak';
if (!copy($file, $newfile)) {
echo "La copie $file du fichier a échoué...\n";
}
?>
j'ai une erreur qui semble bête mais je n'arrive pas à la résoudre !.
J'essaye de copier des images qui se trouvent sur un site afin de les avoir sur mon serveur (je prépare un lecteur RSS). J'ai pensé à la fonction copy().
donc j'essaye en local mais ca ne marche pas, je suis sous fedora, et j'ai l'erreur suivante :
Warning: copy(test.txt.bak) [function.copy]: failed to open stream: Permission denied in /var/www/html/php/test/copy.php on line 5
j'ai changé les droits du repertoire test et du fichier test.txt en 777 mais rien n'y fait.
Y'a-t-il un truc que j'ai oublié de faire.
P.S : J'ai testé que un serveur easyphp sous windows et ca merche en local !
Merci pour votre aide.
Mon code tt simple :
<?php
$file = 'test.txt';
$newfile = 'test.txt.bak';
if (!copy($file, $newfile)) {
echo "La copie $file du fichier a échoué...\n";
}
?>
A voir également:
- [php] erreur fonction copy
- Fonction si et - Guide
- Exact audio copy - Télécharger - Conversion & Extraction
- Super copy - Télécharger - Gestion de fichiers
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
15 réponses
Je commence à manquer d'idées
Ce que tu as ajouté te permet de rendre le répertoire cité visible via http, ça ne change rien à l'accessibilité des fichiers par fopen.
As-tu essayé de faire un petit script de lecture ? Peut-être que tu ne travailles pas sur le répertoire que tu crois, pour une raison qu'il restera à déterminer (Car tu ne mets pas un nom de chemin complet dans le nom du fichier)
justement, autre suggestion : mettre un nom de chemin complet /var/www/html/php/test/essai.txt
Ce que tu as ajouté te permet de rendre le répertoire cité visible via http, ça ne change rien à l'accessibilité des fichiers par fopen.
As-tu essayé de faire un petit script de lecture ? Peut-être que tu ne travailles pas sur le répertoire que tu crois, pour une raison qu'il restera à déterminer (Car tu ne mets pas un nom de chemin complet dans le nom du fichier)
justement, autre suggestion : mettre un nom de chemin complet /var/www/html/php/test/essai.txt
Bonjour
D'après le message , c'est plutôt sur test.txt.bak qu'il y a un problème. Existe-t-il déjà ? Et si oui, avec quels droits ?
D'autre part, tu dis avoir changé les droits sur le répertoire, mais as-tu vérifié que le changement a bien été pris en compte ?
D'après le message , c'est plutôt sur test.txt.bak qu'il y a un problème. Existe-t-il déjà ? Et si oui, avec quels droits ?
D'autre part, tu dis avoir changé les droits sur le répertoire, mais as-tu vérifié que le changement a bien été pris en compte ?
Bonjour,
le fichier test.txt.bak c'est le nom du nouveau fichier, le fichier à copier s'appelle test.txt, il est en 777.
Le changement du rep a bien été pris en compte.
même ce code ne marche pas :
<?php
$fp = fopen('data.txt', 'w');
fwrite($fp, '1');
fwrite($fp, '23');
fclose($fp);
// le contenu de 'data.txt' est maintenant 123 et non 23 !
?>
J'ai testé qur un pc XP avec easyPHP cele fonctionne, y'a peut être un problème a gérer avec php.ini, mais je ne sais pas.
Merci
Seb
le fichier test.txt.bak c'est le nom du nouveau fichier, le fichier à copier s'appelle test.txt, il est en 777.
Le changement du rep a bien été pris en compte.
même ce code ne marche pas :
<?php
$fp = fopen('data.txt', 'w');
fwrite($fp, '1');
fwrite($fp, '23');
fclose($fp);
// le contenu de 'data.txt' est maintenant 123 et non 23 !
?>
J'ai testé qur un pc XP avec easyPHP cele fonctionne, y'a peut être un problème a gérer avec php.ini, mais je ne sais pas.
Merci
Seb
Quand tu dis que ça ne fonctionne pas, c'est à dire ?
Tu n'obtiens pas " 123 " dans le fichier sur linux ?
Tu n'obtiens pas " 123 " dans le fichier sur linux ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
slt,
J'ai ca comme erreur,
Warning: fopen(data.txt) [function.fopen]: failed to open stream: Permission denied in /var/www/html/php/test/write_seb.php on line 2
Je pense que c'est la version d'apache qui est tres restrictive, je dois paramétrer qqchose je pense !
une idée ? thx
J'ai ca comme erreur,
Warning: fopen(data.txt) [function.fopen]: failed to open stream: Permission denied in /var/www/html/php/test/write_seb.php on line 2
Je pense que c'est la version d'apache qui est tres restrictive, je dois paramétrer qqchose je pense !
une idée ? thx
vérifie dans http.conf si tu as
php_admin_value open_basedir none
et dans php.ini la valeur de open_basedir
php_admin_value open_basedir none
et dans php.ini la valeur de open_basedir
dans php.ini j'ai
; open_basedir, if set, limits all file operations to the defined directory
; and below. This directive makes most sense if used in a per-directory
; or per-virtualhost web server configuration file. This directive is
; *NOT* affected by whether Safe Mode is turned On or Off.
;open_basedir =
dans /etc/httpd/conf/httpd.conf, je n'ai pas : php_admin_value open_basedir none
j'ai rajouté cette ligne pour autoriser le dossier :
<Directory "/var/www/html/php">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
mais rien n'y fait
Je ne comprends plus
thx
; open_basedir, if set, limits all file operations to the defined directory
; and below. This directive makes most sense if used in a per-directory
; or per-virtualhost web server configuration file. This directive is
; *NOT* affected by whether Safe Mode is turned On or Off.
;open_basedir =
dans /etc/httpd/conf/httpd.conf, je n'ai pas : php_admin_value open_basedir none
j'ai rajouté cette ligne pour autoriser le dossier :
<Directory "/var/www/html/php">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
mais rien n'y fait
Je ne comprends plus
thx
Rien à voir avec ça.
T'as tenté le chmod() avec php sur le répertoire avant la création de ton fichier ?
Que donne un ls -l de ton répertoire ?
T'as tenté le chmod() avec php sur le répertoire avant la création de ton fichier ?
Que donne un ls -l de ton répertoire ?
tt est autorisé, lol !
[root@localhost test]# ls -l
total 40
-rwxrwxrwx 1 root root 144 mai 4 10:54 copy.php
-rwxrwxrwx 1 root root 165 mai 4 10:52 copy.php~
-rwxrwxrwx 1 sebastien sebastien 146 mai 4 11:49 copy_seb.php
-rwxrwxrwx 1 sebastien sebastien 144 mai 4 11:48 copy_seb.php~
-rwxrwxrwx 1 sebastien sebastien 0 mai 4 11:43 data.txt
-rwxrwxrwx 1 root root 1656 mai 4 10:41 img.jpg
-rwxrwxrwx 1 sebastien sebastien 1 mai 4 11:49 test2.txt
-rwxrwxrwx 1 sebastien sebastien 1 mai 4 11:55 test2.txt.bak
-rwxrwxrwx 1 sebastien root 15 mai 4 10:54 test.txt
-rwxrwxrwx 1 root root 150 mai 4 11:38 write.php
-rwxrwxrwx 1 sebastien sebastien 150 mai 4 11:40 write_seb.php
[root@localhost test]# ls -l
total 40
-rwxrwxrwx 1 root root 144 mai 4 10:54 copy.php
-rwxrwxrwx 1 root root 165 mai 4 10:52 copy.php~
-rwxrwxrwx 1 sebastien sebastien 146 mai 4 11:49 copy_seb.php
-rwxrwxrwx 1 sebastien sebastien 144 mai 4 11:48 copy_seb.php~
-rwxrwxrwx 1 sebastien sebastien 0 mai 4 11:43 data.txt
-rwxrwxrwx 1 root root 1656 mai 4 10:41 img.jpg
-rwxrwxrwx 1 sebastien sebastien 1 mai 4 11:49 test2.txt
-rwxrwxrwx 1 sebastien sebastien 1 mai 4 11:55 test2.txt.bak
-rwxrwxrwx 1 sebastien root 15 mai 4 10:54 test.txt
-rwxrwxrwx 1 root root 150 mai 4 11:38 write.php
-rwxrwxrwx 1 sebastien sebastien 150 mai 4 11:40 write_seb.php
j'ai un logiciel qui s'est ouver certwatch, d'apres les logs il bloque les scripts,
comprends pas pkoi certwatch qui gere les certificat SSL vient faire la !!!
Tkx
comprends pas pkoi certwatch qui gere les certificat SSL vient faire la !!!
Tkx
Tu crois que ça a un rapport avec ton problème d'écriture dans les fichiers ?
As-tu essayé avec un nom de chemin complet ?
As-tu essayé avec un nom de chemin complet ?
Oui, j'ai essayé avec le nom complet, j'ai même essayé dans /tmp mais le même probleme.
Quand j'ai relancé pour la xieme fois le script, j'ai SElinux qui se lance et bloque cet appel donc je pense que ca vient de la mais pas sur.
Quand j'ai relancé pour la xieme fois le script, j'ai SElinux qui se lance et bloque cet appel donc je pense que ca vient de la mais pas sur.
je viens de lancer le script et j'ai SELINUX qui est apparu
il a ecrit plusieurs truc :
Résumé
SELinux empêche le démon httpd d'utiliser des fichiers potentiellement mal étiquetés ./data.txt (httpd_sys_content_t).
Description détaillée
SELinux a refusé au démon httpd d'accéder à des fichiers potentiellement mal étiquetés ./data.txt. Cela signifie que SELinux n'autorisera pas httpd à utiliser ces fichiers. De nombreuses applications tierces installent des fichiers html dans des répertoires que la stratégie de SELinux ne peut pas prédire. Ces répertoires doivent être étiquetés avec un contexte de fichier permettant à httpd d'y accéder.
Autoriser l'accès
Si vous souhaitez modifier le contexte du fichier de ./data.txt de façon à ce que httpd puisse y avoir accès, vous devez l'exécuter en utilisant chcon -t httpd_sys_content_t './data.txt' Vous pouvez regarder la page de manuel httpd_selinux pour davantage d'informations.
J'ai jms eu ce probleme dans le passé, comprends pas gd chose !!
Thx pour votre aide
il a ecrit plusieurs truc :
Résumé
SELinux empêche le démon httpd d'utiliser des fichiers potentiellement mal étiquetés ./data.txt (httpd_sys_content_t).
Description détaillée
SELinux a refusé au démon httpd d'accéder à des fichiers potentiellement mal étiquetés ./data.txt. Cela signifie que SELinux n'autorisera pas httpd à utiliser ces fichiers. De nombreuses applications tierces installent des fichiers html dans des répertoires que la stratégie de SELinux ne peut pas prédire. Ces répertoires doivent être étiquetés avec un contexte de fichier permettant à httpd d'y accéder.
Autoriser l'accès
Si vous souhaitez modifier le contexte du fichier de ./data.txt de façon à ce que httpd puisse y avoir accès, vous devez l'exécuter en utilisant chcon -t httpd_sys_content_t './data.txt' Vous pouvez regarder la page de manuel httpd_selinux pour davantage d'informations.
J'ai jms eu ce probleme dans le passé, comprends pas gd chose !!
Thx pour votre aide