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/
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é.
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.
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.