Je continue à recevoir cette erreur en essayant de configurer le répertoire de téléchargement avec Apache 2.2 et PHP 5.3 sur CentOS.
Dans php.ini:
upload_tmp_dir = /var/www/html/mysite/tmp_file_upload/
Dans httpd.conf:
Directory /var/www/html/mysite/tmp_file_upload/>
Options -Indexes
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Directory /var/www/html/mysite/images/>
Options -Indexes
</Directory>
Autorisations du répertoire CentOS:
drwxrwxr-x 2 root root 4096 Nov 11 10:01 images
drwxr-xr-x 2 root root 4096 Nov 12 04:54 tmp_file_upload
Peu importe ce que je fais, je reçois cette erreur de PHP lorsque je télécharge le fichier:
Avertissement: move_uploaded_file (images / robot.jpg): échec de l'ouverture du flux: autorisation refusée dans /var/www/html/mysite/process.php en ligne 78
Attention: move_uploaded_file (): Impossible de déplacer '/ tmp / phpsKD2Qm' vers 'images / robot.jpg' dans /var/www/html/mysite/process.php en ligne 78
Comme vous pouvez le voir, il n'a jamais pris la configuration du fichier php.ini concernant le fichier de téléchargement.
Qu'est-ce que je fais de mal ici?
la source
Réponses:
C'est parce que
images
ettmp_file_upload
ne sont accessibles en écriture que par l'root
utilisateur. Pour que le téléchargement fonctionne, nous devons rendre le propriétaire de ces dossiers identique au propriétaire du processus httpd OU les rendre globalement accessibles en écriture (mauvaise pratique).$ps aux | grep httpd
. La première colonne sera le propriétaire généralement ce seranobody
Changez le propriétaire de
images
ettmp_file_upload
devenirnobody
ou quel que soit le propriétaire que vous avez trouvé à l'étape 1.Chmod
images
ettmp_file_upload
maintenant accessible en écriture par le propriétaire, si nécessaire [Il semble que vous l'ayez déjà en place]. Mentionné dans la réponse @Dmitry Teplyakov.Pour plus de détails sur les raisons de ce comportement, consultez le manuel http://php.net/manual/en/ini.core.php#ini.upload-tmp-dir , notez qu'il parle également de
open_basedir
directive.la source
jacob
(moi, car c'est ma machine locale) et les dossiers ont tous755
ou775
.sudo service httpd restart
après avoir changé les autorisations. Ensuite, cela a fonctionné :) Au lieu de changer de propriétaire,chown
j'ai ajouté mon processus apache à un groupe 'www' et j'ai ajouté ces répertoires au même groupe 'www' viachgrp
Vous pouvez également exécuter ce script pour connaître le propriétaire du processus Apache:
<?php echo exec('whoami'); ?>
Et puis changez le propriétaire du répertoire de destination en ce que vous avez. Utilisez la commande:
Et puis utilisez la commande
pour modifier l'autorisation du répertoire de destination.
la source
<?php echo exec('whoami'); ?>
. Quelqu'un sait-il pourquoi ?exec('whoami')
. M'a sauvé 30 minutes de plus. était chowning utilisateur ubuntuwww-data
? habituellementSi vous utilisez Mac OS X, accédez à la racine du fichier ou au dossier de votre site Web.
Ensuite, faites un clic droit dessus, allez pour obtenir des informations, allez tout en bas ( Partage et autorisations ), ouvrez cela, changez tout en lecture seule pour lire et écrire. Assurez-vous d'ouvrir le cadenas, accédez à l'icône de réglage et choisissez Appliquer aux éléments inclus ...
la source
/private/var/tmp
sur mon Mac.Cela a fonctionné pour moi.
Puis déconnectez-vous ou redémarrez.
En cas de
SELinux
plainte, essayez ce qui suitla source
Je voulais ajouter ceci aux suggestions précédentes. Si vous utilisez une version de Linux sur laquelle SELinux est activé, vous devez également l'exécuter dans un shell:
En plus de donner à votre serveur Web des autorisations utilisateur via un groupe ou en changeant le propriétaire de l'annuaire.
la source
restorecon -R -v /path/to/your/directory
doit probablement également être inclus dans cela par la suite. access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/…Modifier les autorisations pour ce dossier
# chmod -R 0755 /var/www/html/mysite/images/
la source
Essaye ça:
ouvrez / etc / apache2 / envvars
remplacer
www-data
par votreyour_username
remplacer par
la source
J'ai rencontré ce problème lié même après avoir déjà exécuté avec succès composer. J'ai mis à jour le compositeur, et lors de l'exécution
composer install
ouphp composer.phar install
j'ai obtenu:Il s'avère qu'après de nombreuses recherches, les réponses précédentes concernant la modification des autorisations pour le dossier ont fonctionné. Ce ne sont plus que des répertoires légèrement différents maintenant.
Dans mon installation, sur OS X, le fichier de cache est dans
/Users/[USER]/.composer/cache
, et j'ai eu des problèmes car le fichier de cache appartenait à root. Changer la propriété de «.composer» de manière récursive pour mon utilisateur a résolu le problème.C'est ce que j'ai fait:
Ensuite, j'ai exécuté à nouveau l'installation du compositeur et le tour est joué!
la source
Ce problème se produit lorsque l'utilisateur apache (www-data) n'a pas l'autorisation d'écrire dans le dossier. Pour résoudre ce problème, vous devez placer l'utilisateur dans le groupe www-data.
Je viens de faire ceci:
Exécutez ce code php
<?php echo exec('whoami'); ?>
pour découvrir l'utilisateur utilisé par apache. Après, exécutez les commandes dans le terminal:Il renverra quelque chose comme ceci:
J'ai gardé l'utilisateur mais j'ai changé le groupe en www-data
la source
La solution est si simple. Cliquez avec le bouton droit sur le dossier IMAGE (destination), accédez aux propriétés, cliquez sur l'onglet d'autorisation et modifiez l'accès des autres à Créer et supprimer des fichiers .
la source
Changez simplement la permission de tmp_file_upload en 755 Voici la commande chmod -R 755 tmp_file_upload
la source
Essaye ça
find /var/www/html/mysite/images/ -type f -print0 | xargs -0 chmod -v 664
la source