web-dev-qa-db-fra.com

Ne peut rien télécharger via wordpress

Je viens tout juste d'installer une installation locale de Wordpress 3.5.2 sur mon ordinateur portable, exécutant Ubuntu 12.10. J'ai installé en suivant le guide de ici . Jusqu'à présent, tout le reste fonctionne, sauf que je ne peux télécharger aucun fichier multimédia via Media Library -> Add New.

Le fichier semble se télécharger lorsque la barre de progression passe de 0 à 100%. Cependant, après cela, wordpress ne peut plus afficher la vignette ou l'image. Après avoir examiné le dossier de téléchargement, il est vide. J'ai donc pensé que c'était un problème d'autorisations, après avoir suivi les instructions des forums d'assistance, pas de dés.

Wordpress est installé sur /usr/share/wordpress. Le dossier de téléchargement est par défaut dans /var/lib/wordpress/wp-content/uploads. J'ai 755 pour wp-content/ et 777 pour uploads. Les dossiers appartiennent à www-data.

Je ne vois aucune erreur, les fichiers n'apparaîtront nulle part. Je peux copier manuellement des fichiers dans le dossier uploads/ comme tout utilisateur à cause des autorisations et je peux afficher http://localhost/wordpress/wp-content/uploads/file.jpg avec un navigateur Web. Je n'ai pas de thèmes ou de plugins supplémentaires installés. J'ai ajouté define('WP_DEBUG', true); à mon fichier de configuration, mais aucune erreur ne s'affiche.

EDIT: Voici une ligne de /var/log/Apache2/error.log si elle vous aide.

[Thu Jun 27 22:35:02 2013] [error] [client 127.0.0.1] PHP Warning:  Creating default object from empty value in /usr/share/wordpress/wp-admin/includes/update.php on line 92, referer: http://localhost/wordpress/wp-admin/upload.php

EDIT2: Voici des exemples de listes de répertoires avec autorisations

msvalkon@Lunkwill:/var/www$ ll
total 20
drwxr-xr-x  2 www-data www-data 4096 Jun 27 12:21 ./
drwxr-xr-x 15 root     root     4096 Jun  7 10:06 ../
-rw-------  1 www-data www-data   46 Jun 27 12:21 .bash_history
-rw-r--r--  1 root     root      200 Jun 27 11:46 index.php
-rw-r--r--  1 root     root       11 Dec 14  2012 .profile
lrwxrwxrwx  1 msvalkon www-data   21 Jun 20 11:45 wordpress -> /usr/share/wordpress//

msvalkon@Lunkwill:/usr/share/wordpress$ ll
total 164
drwxr-xr-x   5 msvalkon www-data  4096 Jun 27 13:41 ./
drwxr-xr-x 349 root     root     12288 Jun 20 11:51 ../
lrwxrwxrwx   1 msvalkon www-data    23 Sep 13  2012 .htaccess ->  /etc/wordpress/htaccess
-rw-r--r--   1 msvalkon www-data   395 Jan  8  2012 index.php
-rw-r--r--   1 msvalkon www-data  9202 Sep 13  2012 readme.html
-rw-r--r--   1 msvalkon www-data  4264 Dec 14  2011 wp-activate.php
drwxr-xr-x   9 msvalkon www-data  4096 Jun 27 12:48 wp-admin/
--- SNIP ---
drwxr-xr-x   5 msvalkon www-data  4096 Jun 27 12:48 wp-content/


msvalkon@Lunkwill:/var/lib/wordpress$ ll wp-content/
total 28
drwxrwxrwx 7 msvalkon www-data 4096 Jun 27 12:58 ./
drwxrwxrwx 3 msvalkon www-data 4096 Jun  5 18:17 ../
drwxrwxrwx 2 msvalkon www-data 4096 Sep 13  2012 blogs.dir/
drwxrwxrwx 2 msvalkon www-data 4096 Jun 27 12:48 languages/
drwxrwxrwx 2 msvalkon www-data 4096 Jun 27 12:48 plugins/
drwxrwxrwx 2 msvalkon www-data 4096 Jun 27 12:48 themes/
drwxrwxrwx 2 msvalkon www-data 4096 Jun 27 13:17 uploads/
1
msvalkon

Oui, j'ai réussi à résoudre le problème. Peut-être que cette réponse aide d'autres personnes qui rencontrent à nouveau le problème. Le problème est inhérent à la procédure d'installation lors de l'installation via le gestionnaire de paquets d'Ubuntu.

Le problème réel était dans la configuration de la base de données, l'installation avait défini WP_CONTENT_DIR à /srv/www/wp-content/localhost, un répertoire que je ne connaissais même pas.

msvalkon@Lunkwill:/var/www/wordpress$ Sudo cat /etc/wordpress/config-localhost.php 
<?php
# Created by /usr/share/doc/wordpress/examples/setup-mysql 
--- SNIP ----
define('WP_CONTENT_DIR', '/srv/www/wp-content/localhost');
define('WP_DEBUG', true);
?>

Apparemment, le package .deb crée les structures de répertoire suivantes:

/usr/share/wordpress <-- contains a wp-content-folder and symlinks to
                         /var/lib/wordpress/wp-content/uploads and /blogs.dir
/var/lib/wordpress <-- contains a wp-content-folder
/srv/www/wordpress <-- also contains a wp-content-folder

La modification des autorisations de /srv/www/wordpress/wp-content a finalement fonctionné.

0
msvalkon

Les autorisations 777 sont passables OK sur localhost, mais très mauvaises en production. (Vous pouvez définir temporairement 777 et essayer un téléchargement. Si cela fonctionne, définissez de nouveau les autorisations de dossier sur 755; il s'agit d'une solution de contournement pour certaines configurations de l'hôte.)

Voir http://codex.wordpress.org/Changing_File_Permissions pour le schéma d'autorisations standard WP.

À partir de ce doc:

En règle générale, tous les fichiers doivent appartenir à votre compte d'utilisateur (ftp) sur votre serveur Web et doivent être accessibles en écriture pour ce compte. Sur les hôtes partagés, les fichiers ne doivent jamais appartenir au processus serveur Web lui-même (parfois, il s'agit de www, ou d'Apache, ou de personne).

Et consultez http://codex.wordpress.org/Hardening_WordPress#File_Permissions pour connaître le meilleur moyen de définir des autorisations sécurisées.

0
markratledge

Lors de mon installation de 13.04, il y avait en fait un répertoire /srv/www/wp-content/localhost, dans lequel se trouvaient blogs.dir et uploads, tandis que les trois autres répertoires sont des liens symboliques vers /var/lib/wordpress/wp-content.

Remplacer les deux sous-répertoires et en faire des liens symboliques similaires aux autres a résolu le problème pour moi.

0
user35041