web-dev-qa-db-fra.com

restriction open_basedir en vigueur malgré le répertoire de fichiers dans la racine Web

Lorsque j'essaie de télécharger un logo sur mon sous-thème Zen 3.1 (Apparence> Paramètres), j'obtiens l'erreur suivante:

Warning: is_file(): open_basedir restriction in effect. File(/tmp/phpillr69) is not within the allowed path(s): (/home/testwww/web/) in image_get_info() (line 126 of /home/testwww/web/informator/includes/image.inc). 
Warning: realpath(): open_basedir restriction in effect. File(/tmp/phpillr69) is not within the allowed path(s): (/home/testwww/web/) in drupal_realpath() (line 2177 of /home/testwww/web/informator/includes/file.inc). 
Warning: getimagesize(): Filename cannot be empty in image_Gd_get_info() (line 349 of /home/testwww/web/informator/modules/system/image.Gd.inc). 
The specified file logo.gif could not be uploaded. Only JPEG, PNG and GIF images are allowed.  

Cela se produit même si les chemins d'accès dans Configuration> Média> Système de fichiers sont définis pour être à l'intérieur de la racine Web.

  • Chemin du système de fichiers public: sites/[mon répertoire]/fichiers [autorisation 775]
  • Répertoire temporaire: sites/[mon répertoire]/fichiers/tmp [autorisation 755]

Il semble que Drupal essaie d'enregistrer un fichier temporaire dans/tmp/bien que le répertoire temporaire soit défini sur quelque chose de différent.

Comment puis-je résoudre le problème pour pouvoir télécharger un fichier?

6
Michał Pękała

La clé ici est que PHP tente de créer le fichier temporaire dans un répertoire public. Si vous vous référez aux paramètres de votre PHP, découvrez ce qui est spécifié) pour le "upload_tmp_dir". Utilisez un appel phpinfo () pour l'afficher, également disponible dans le rapport d'état en cliquant sur le numéro de version PHP. Ce répertoire a des privilèges spéciaux que open_basedir ne bloquera pas. Définissez explicitement votre répertoire drupal temp sur ce chemin et cela devrait fonctionner.

4
codexmas