Closed ghost closed 11 years ago
A chaque fois, le lien des médias est tronqué avec les 14 derniers caractères du hash du nom de dossier. Tu utilises quelle version de PHP ?
root@darkstar:~# php -v PHP 5.4.12 (cli) (built: Mar 2 2013 16:06:40)
Pour le coup, les logs ne disent que l'évident (le chemin local est bon, c'est chrooté): 2013/03/17 17:16:29 [error] 1474#0: *1649 open() "/autoblog/d39f9b89d480ff/media/9fa4ca7c.flattr-aryo.png" failed (2: No such file or directory), client: 87.91.126.27, server: autoblog.br4ndon.eu, request: "GET /d39f9b89d480ff/media/9fa4ca7c.flattr-aryo.png HTTP/1.1", host: "autoblog.br4ndon.eu", referrer: "http://autoblog.br4ndon.eu/5ef4be1f3f5b93bf5022ddb771d39f9b89d480ff/?2
Bon ce commit devrait résoudre ton problème : https://github.com/mitsukarenai/Projet-Autoblog/commit/b5cdbebfa3769df2b82a5242090f96f5245af081 (il faut tout recréer par contre).
Le chemin vers les images était relatif, je ne sais pas pourquoi le nom de dossier se retrouvait tronqué chez toi. C'est peut être lié à nginx...
Tiens nous au courant.
Fait! Alors en rehaussant le niveau d'affichage des logs, on remarque en fait l'erreur suivante qui s'affiche en bas de page à l'ajout d'un autoblog: Error happened ! 0 - SQLite3::exec(): database is locked In: /chemin/autoblog.php:288 http://autoblog.br4ndon.eu/b0b151623d660b48d845d954b49ae0f3e0e4eb16/ #0 [internal function]: exception_error_handler(2, 'SQLite3::exec()...', '/root/autoblog....', 288, Array) #1 /chemin/autoblog.php(288): SQLite3->exec('INSERT INTO art...') #2 /chemin/autoblog.php(413): VroumVroum_Blog->insertOrUpdateArticle('http://reflets....', 'Chypre : l???Eu...', 'http://reflets....', 1363603746, '
Conf nginx:
server { listen 80; server_name autoblog.br4ndon.eu; server_name_in_redirect off;
access_log /var/log/autoblog.log;
error_log /var/log/autoblog.log;
root /chemin/autoblog/;
index index.php;
location / {
try_files $uri $uri/ /index.php?q=$uri&$args =404;
}
# deny running scripts inside writable directories
location ~* /(images|cache|media|logs|tmp)/.*\.(php|pl|py|jsp|asp|sh|cgi)$ {
return 403;
error_page 403 /403_error.html;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm/autoblog.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /chemin$fastcgi_script_name;
}
# caching of files
location ~* \.(ico|pdf|flv)$ {
expires 1y;
}
location ~* \.(js|css|png|jpg|jpeg|gif|swf|xml|txt)$ {
expires 14d;
}
include drop;
location ~* \.(png|gif|jpg|jpeg|swf|ico)(\?[0-9]+)?$ {
valid_referers none blocked autoblog.br4ndon.eu;
if ($invalid_referer) {
return 403;
}
}
}
Un rafraîchissement plus tard, j'ai toujours la page bloquée sur: "Mise à jour Mise à jour de la base de données, veuillez patienter..." Mais avec un nouveau message d'erreur:
Error happened ! 0 - Undefined index: path In: /chemin/autoblog.php:519 http://autoblog.br4ndon.eu/b0b151623d660b48d845d954b49ae0f3e0e4eb16/ #0 /root/autoblog.php(519): exception_error_handler(8, 'Undefined index...', '/chemin/autoblog....', 519, Array) #1 /chemin/autoblog.php(283): VroumVroum_Blog->mirrorMediasForArticle('
update() #4 /chemin/b0b151623d660b48d845d954b49ae0f3e0e4eb16/index.php(1): require_once('/chemin/autoblog....') #5 {main}
exec(): database is locked: houh je déteste ça ^^ Regarde voir dans le dossier, il s'y trouverait un fichier "journal" (peut-être caché) qu'il faut supprimer pour libérer la base. Au besoin, le correctif c'est greffer un busyTimeout à la requête SQLite.
Le second message d'erreur renvoie plutôt à un souci avec parse_url(). Mmmmh. Après "$url = parse_url($m[2]);", peux-tu ajouter un petit "var_dump($url);" ?
Désolé pour la réponse tardive ^^
Il y a bien un fichier articles.db-journal qui apparaît lors de la création d'un autoblog. Le supprimer n'a pas d'effet!
J'ai recréé une instance d'autoblog avec la dernière version git, et ces erreurs n'apparaissent en fiat que durant la mise à jour d'un autoblog. En attendant un peu, l'autoblog s'affiche: http://autoblog.br4ndon.eu/b0b151623d660b48d845d954b49ae0f3e0e4eb16/ Mais toujours avec le même problème de liens médias. Remarque: les liens rss et opml en bas de page sont justes, mais pas les liens de conf (vvb.ini) et de la bdd (articles.db).
Edit: J'ai mis en place ta seconde instruction :) Voici ce que ça donne juste après avoir ajouté l'autoblog de reflets sur une instance toute neuve:
"Mise à jour Mise à jour de la base de données, veuillez patienter..."
array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(45) "/wp-content/uploads/2013/03/charia-laique.jpg" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(45) "/wp-content/uploads/2013/03/charia-laique.jpg" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(53) "/wp-content/plugins/flattr/img/flattr-badge-large.png" } Error happened ! 0 - SQLite3::exec(): database is locked In: /root/autoblog.php:288 http://autoblog.br4ndon.eu/b0b151623d660b48d845d954b49ae0f3e0e4eb16/ #0 [internal function]: exception_error_handler(2, 'SQLite3::exec()...', '/root/autoblog....', 288, Array) #1 /root/autoblog.php(288): SQLite3->exec('INSERT INTO art...') #2 /root/autoblog.php(413): VroumVroum_Blog->insertOrUpdateArticle('http://reflets....', 'La charia la??q...', 'http://reflets....', 1364551025, '
(En l&rs...') #3 /root/autoblog.php(850): VroumVroum_Blog->update() #4 /root/b0b151623d660b48d845d954b49ae0f3e0e4eb16/index.php(1): require_once('/root/autoblog....') #5 {main}
Re-edit: après rafraichissement
Mise à jour Mise à jour terminée ! Cliquez ici pour recharger cette page.
array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(45) "/wp-content/uploads/2013/03/charia-laique.jpg" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(45) "/wp-content/uploads/2013/03/charia-laique.jpg" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(53) "/wp-content/plugins/flattr/img/flattr-badge-large.png" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(38) "/wp-content/uploads/2013/03/chypre.jpg" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(38) "/wp-content/uploads/2013/03/chypre.jpg" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(39) "/wp-content/uploads/2013/03/bomarzo.jpg" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(39) "/wp-content/uploads/2013/03/bomarzo.jpg" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(44) "/wp-content/uploads/2013/03/bar_des_amis.png" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(44) "/wp-content/uploads/2013/03/bar_des_amis.png" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(53) "/wp-content/plugins/flattr/img/flattr-badge-large.png" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(39) "/wp-content/uploads/2013/03/uta-772.jpg" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(39) "/wp-content/uploads/2013/03/uta-772.jpg" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(49) "/wp-content/uploads/2013/03/Abdallah-Senoussi.jpg" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(49) "/wp-content/uploads/2013/03/Abdallah-Senoussi.jpg" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(53) "/wp-content/plugins/flattr/img/flattr-badge-large.png" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(50) "/wp-content/uploads/2013/03/BankruptSpedometer.jpg" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(50) "/wp-content/uploads/2013/03/BankruptSpedometer.jpg" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(41) "/wp-content/uploads/2013/03/lol-tiger.jpg" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(41) "/wp-content/uploads/2013/03/lol-tiger.jpg" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(53) "/wp-content/plugins/flattr/img/flattr-badge-large.png" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(65) "/wp-content/uploads/2011/08/eg8_welcome_to_civilized_internet.png" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(65) "/wp-content/uploads/2011/08/eg8_welcome_to_civilized_internet.png" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(53) "/wp-content/plugins/flattr/img/flattr-badge-large.png" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(63) "/wp-content/uploads/2013/03/BRADLEY-MANNING-DANIEL-ELLSBERG.jpg" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(63) "/wp-content/uploads/2013/03/BRADLEY-MANNING-DANIEL-ELLSBERG.jpg" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(40) "/wp-content/uploads/2013/03/bradley2.jpg" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(40) "/wp-content/uploads/2013/03/bradley2.jpg" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(40) "/wp-content/uploads/2013/03/bradley1.jpg" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(40) "/wp-content/uploads/2013/03/bradley1.jpg" } array(3) { ["scheme"]=> string(5) "https" ["host"]=> string(26) "pressfreedomfoundation.org" ["path"]=> string(39) "/sites/default/files/full_statement.mp3" } array(3) { ["scheme"]=> string(5) "https" ["host"]=> string(26) "pressfreedomfoundation.org" ["path"]=> string(39) "/sites/default/files/full_statement.ogg" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(53) "/wp-content/plugins/flattr/img/flattr-badge-large.png" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(41) "/wp-content/uploads/2013/03/saroumane.jpg" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(41) "/wp-content/uploads/2013/03/saroumane.jpg" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(53) "/wp-content/plugins/flattr/img/flattr-badge-large.png" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(126) "/wp-content/uploads/2013/03/cctv_surveillance_cameras_swastica_graffiti_shoreditch_london_uk_doctorow_at_flickr_2770511071.jpg" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(50) "/wp-content/uploads/2013/03/attentifs-ensemble.png" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(53) "/wp-content/plugins/flattr/img/flattr-badge-large.png" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(104) "/wp-content/uploads/2013/03/Un-chiot-pendu-à-un-fil-à-linge-soulève-l’indignation-sur-Facebook.jpeg" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(104) "/wp-content/uploads/2013/03/Un-chiot-pendu-à-un-fil-à-linge-soulève-l’indignation-sur-Facebook.jpeg" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(53) "/wp-content/plugins/flattr/img/flattr-badge-large.png" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(14) "webcastory.com" ["path"]=> string(57) "/wcs2013/wp-content/uploads/2013/03/jean-michel-apati.jpg" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(14) "webcastory.com" ["path"]=> string(59) "/wcs2013/wp-content/uploads/2013/03/CriseConfianceSmall.jpg" } array(3) { ["scheme"]=> string(4) "http" ["host"]=> string(12) "reflets.info" ["path"]=> string(53) "/wp-content/plugins/flattr/img/flattr-badge-large.png" }
Donc visiblement l'url est correctement parsée. Tu peux enlever le var_dump, maintenant faut voir comment les fichiers sont inscrits dans le dossier, et comment indexés dans articles.db.
J'ai une instance php-fpm qui bosse avec les permissions de user1 et nogroup. Nginx bosse avec nobody et nogroup. Donc les fichiers sont inscrits avec les permissions user1:nogroup (c'est bien ce que tu demandais? ^^). $ ls -l total 136 -rwxr-xr-x 1 user1 nogroup 29991 Mar 29 12:08 autoblog.php drwxr-xr-x 3 user1 nogroup 192 Mar 29 11:58 b0b151623d660b48d845d954b49ae0f3e0e4eb16/ -rwxr-xr-x 1 user1nogroup 9173 Mar 23 15:07 class_rssfeed.php -rwxr-xr-x 1 user1 nogroup 1969 Mar 23 15:07 config.php -rwxr-xr-x 1 user1 nogroup 5362 Mar 23 15:07 functions.php -rwxr-xr-x 1 user1 nogroup 1537 Mar 23 15:07 icon-logo.svg -rwxr-xr-x 1 user1 nogroup 47389 Mar 23 15:07 index.php -rwxr-xr-x 1 user1 nogroup 454 Mar 23 15:07 README.md -rw-r--r-- 1 user1 nogroup 691 Mar 23 15:07 rss.png -rw-r--r-- 1 user1 nogroup 4932 Mar 29 11:57 rss.xml -rw-r--r-- 1 user1 nogroup 17 Mar 23 15:07 version -rwxr-xr-x 1 user1 nogroup 6085 Mar 23 15:07 xsaf3.php
Pas tout à fait :) Mais observons:
URL du fichier: http://autoblog.br4ndon.eu/b0b151623d660b48d845d954b49ae0f3e0e4eb16/media/2de3fc65.meme-refletz.jpg
URL telle qu'inscrite dans la base de données: http://autoblog.br4ndon.eu/9ae0f3e0e4eb16/media/2de3fc65.meme-refletz.jpg
Ça fait 26 premiers caractères en moins. Pourrais-tu vérifier la valeur de LOCAL_URI et ROOT_DIR ? (autoblog.php, lignes 41-54 et 35) Ce qui pourrait aider aussi: print de $path à chaque transformation.
La ligne 525 m'intrigue aussi, puisque c'est juste là qu'il y a le sha1. Au passage, var_dump un peu tout ça :)
(Je ne connais quasi rien en php ^^)
J'ai ajouté
'.LOCAL_URL.'
'.LOCAL_URI.'
'.ROOT_DIR.'
à la fin de la div "footer", et voici ce que ça donne:
Propulsé par Projet Autoblog 0.3.0 - Flux RSS Download: configuration (OPML) - articles http://autoblog.br4ndon.eu/9ae0f3e0e4eb16/ /root/b0b151623d660b48d845d954b49ae0f3e0e4eb16
Le LOCAL_URI étant la ligne absente.
Tu voudrais ensuite que j'ajoute un "var_dump($url);" ligne 526 c'est ça? Comment pourais-je afficher $path à chaque transformation?
Mmmh. Lignes 41 à 48, mets ça:
if (!defined('LOCAL_URL')) { // Automagic URL discover echo "root dir: ".ROOT_DIR."\n"; echo "docroot: ".$_SERVER['DOCUMENT_ROOT']."\n"; $path = substr(ROOT_DIR, strlen($_SERVER['DOCUMENT_ROOT'])); echo "path 1: ".$path."\n"; $path = (!empty($path[0]) && $path[0] != '/') ? '/' . $path : $path; echo "path 2: ".$path."\n"; $path = (substr($path, -1) != '/') ? $path . '/' : $path; echo "path 3: ".$path."\n"; define('LOCAL_URL', 'http' . (!empty($_SERVER['HTTPS']) ? 's' : '') . '://' . $_SERVER['HTTP_HOST'] . $path); echo "local url: ".LOCAL_URL; die; } else { die('LOCAL URL déjà défini'); }
Ça permettrait de retracer la constitution de LOCAL_URL. On verra la ligne 525 plus tard :)
(j'essaye de reproduire ça dans une virtualbox pendant ce temps)
Résutlat: root dir: /root/b0b151623d660b48d845d954b49ae0f3e0e4eb16 docroot: /var/www/root/brdn/autoblog/root path 1: 9ae0f3e0e4eb16 path 2: /9ae0f3e0e4eb16 path 3: /9ae0f3e0e4eb16/ local url: http://autoblog.br4ndon.eu/9ae0f3e0e4eb16/
Pour préciser si besoin: l'utilisateur employé par php-fpm pour traiter les requêtes php a pour root personnel: /var/www/root/brdn/autoblog/ -- d’où les chemins commençant par /root/ :)
Ah ça y est, j'y vois plus clair. Ah misère...
tu vois le docroot ? Il a une longueur de 32 caractères (c'est ce qui est retourné par strlen). Or, c'est ce qui est retranché au début de root_dir. root_dir fait 46 caractères et NE CONTIENT PAS LE DOCROOT (c'est ça l'imprévu).
substr: enlever 32 caractères au début de ROOT_DIR /root/b0b151623d660b48d845d954b49ae0f3e0e4eb16 devient donc: 9ae0f3e0e4eb16
Normalement ROOT_DIR aurait dû être ça pour que ça fonctionne comme prévu: /var/www/root/brdn/autoblog/root/b0b151623d660b48d845d954b49ae0f3e0e4eb16 (à peu près)
On va essayer d'adapter ça pour une compatibilité universelle :ambulance: Si on peut faire tout ça en URL relative, ça serait facile et efficace.
Re,
Peux-tu recréer à neuf les autoblogs et essayer avec le commit ? Si c'est bon, issue closed :)
Ah, je comprends le soucis maintenant... Et ton commit est efficace! Ça fonctionne impec'! Merci! \o/
Bonjour! Pour ma config, je préfère préciser: nginx, php-fpm chrooté avec juste ce qu'il faut pour faire fonctionner curl, et allow_url_fopen=1.
Le soucis, c'est qu'une fois un autoblog créé, par exemple celui de Reflets.info, on a: http://autoblog.br4ndon.eu/b0b151623d660b48d845d954b49ae0f3e0e4eb16/ Avec des liens médias qui pointent vers: http://autoblog.br4ndon.eu/9ae0f3e0e4eb16/ Avec par exemple: http://autoblog.br4ndon.eu/9ae0f3e0e4eb16/media/c366952c.tpams.png Qui se trouve en fait à: http://autoblog.br4ndon.eu/b0b151623d660b48d845d954b49ae0f3e0e4eb16/media/c366952c.tpams.png
Faire: ln -s b0b151623d660b48d845d954b49ae0f3e0e4eb16/ 9ae0f3e0e4eb16/ Résout le problème, mais ça reste un truc à régler :)