plg a écrit:
Là comme ça je n'ai pas d'idée, je peux simplement te dire que j'utilise des liens symbolique aussi et que ça ne pose pas de soucis sur ma Debian.
Bonjour PLG,
J'aimerai connecter un SSD externe à ma RaspberryPI 3 (sous raspberry PI OS) et j'ai tenté le lien symbolique puisque tu dis que c'est OK pour toi.
J'ai fait ce lien dans le répertoire ./galleries mais cela ne fonctionne ps chez moi.
Dois-je rajouter un paramétrage supplémentaire ?
En te remerciant par avance.
plg a écrit:
grodid a écrit:
Je vais publier prochainement une recette complète à appliquer dans le cas de mon setup de Piwigo hébergé par Fedora, pour expliquer l'utilisation d'un disque réseau.
Excellent, merci grodid
Ci-dessous une recette pour expliquer comment utiliser un disque dur en réseau avec Piwigo.
- OS Linux Fedora 11, avec Apache, MySQL, PHP et PhpMyAdmin
- Piwigo 2.1.2
- Disque dur réseau additionnel (DDR), connecté par Ethernet, proposant entre autres le protocole SMB (CIFS/Samba) (disque d2 Network dans mon cas)
- Toutes les opérations sont à effectuer sous root
- La paire machin/truc désigne le couple administrateur/password du DDR.
a) Installer samba-client sur le serveur de Piwigo (PWG) par :
> yum install samba-client
b) Créer (par ex.) un dossier sur PWG par :
> mkdir /mnt/CIFS
c) Monter le DDR (adresse IP: 192.168.0.zz) par :
> /sbin/mount.cifs //192.168.0.zz/share /mnt/CIFS -o user=machin,password=truc,uid=apache,gid=apache,file_mod=0777,dir_mod=0777
(s'il faut démonter le DDR, utiliser : umount.cifs /mnt/CIFS)
d) Supposons que la branche de l'install Piwigo que l'on souhaite installer sur le DDR soit le dossier upload
e) Créer (par ex.) un dossier déporté sur le DDR par :
> mkdir -p /mnt/CIFS/vous/Storage/Piwigo/upload
Le dossier ainsi créé devrait avoir cette tête-là :
> ls -ld /mnt/CIFS/vous/Storage/Piwigo/upload
drwxrwxrwx. 1 apache apache 0 sept. 18 00:43 /mnt/CIFS/vous/Storage/Piwigo/upload
f) Se déplacer à la racine de l'install Piwigo par :
> cd /var/www/html/pwg01
g) renommer temporairement le dossier upload :
> mv upload SAVE-upload
h) Créer un lien symbolique sur PWG par :
> ln -s /mnt/CIFS/vous/Storage/Piwigo/upload
i) Faire une sauvegarde de sécurité pour l'arborescence upload par :
> tar czf tar-upload.tgz SAVE-upload
j) Déplacer l'arborescence upload vers le DDR par :
> mv SAVE-upload/* /mnt/CIFS/vous/Storage/Piwigo/upload/
k) Configurer SElinux par :
> setenforce 0 (pour passer SELinux en mode 'permissif')
> setsebool -P httpd_use_cifs on (peut-être redondant avec le précédent)
> Ajouter cette ligne à la place de 'SELINUX=enforcing' dans /etc/selinux/config
SELINUX=permissive
> sestatus (pour vérifier)
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: permissive
Mode from config file: permissive
Policy version: 24
Policy from config file: targeted
> semanage boolean -l | grep httpd_use_cifs (pour vérifier)
httpd_use_cifs -> ouvert Allow httpd to access cifs file systems
l) Configurer Apache en adaptant/ajoutant/vérifiant les directives suivantes dans /etc/httpd/conf/httpd.conf
<Directory "/var/www/html/">
Options +Indexes +FollowSymLinks
AllowOverride Options
Order allow,deny
Allow from all
</Directory>
php_admin_value safe_mode off
EnableSendfile Off
EnableMMAP Off
Remarque : la configuration d'open_basedir n'est pas nécessaire.
m) Redémarrer Apache par :
> service httpd restart
Et cela devrait être bon !
Certains trucs devraient paraître superflus aux puristes, mais j'ai préféré fournir tous mes tuyaux, en mettant ceinture ET bretelles.
Vous devriez pouvoir regarder vos photos, et faire au moins des mises à jour avec pLoader.
Bonne chance, G.
grodid a écrit:
Je vais publier prochainement une recette complète à appliquer dans le cas de mon setup de Piwigo hébergé par Fedora, pour expliquer l'utilisation d'un disque réseau.
Excellent, merci grodid
Le problème est résolu : il s'agit d'un bug du protocole CIFS qu'il faut contourner avec une astuce dans la configuration d'Apache, et cela n'a rien à voir avec Piwigo. Il faut simplement ajouter dans ce fichier la directive :
EnableSendfile Off
[Edit] Recette trouvée ici : https://issues.apache.org/bugzilla/show … i?id=42751
Le bon fonctionnement du serveur Apache ainsi modifié peut être testé à l'aide de wget. Exemple :
wget 'http://www.monsite.org/tpiwigo1/lesymlink/2010/09/18/thumbnail/TN-20100918171859-ac36b997.jpg'
où lesymlink est le lien symbolique qui pointe vers la branche de l'arborescence hébergée par le disque réseau.
Je vais publier prochainement une recette complète à appliquer dans le cas de mon setup de Piwigo hébergé par Fedora,
pour expliquer l'utilisation d'un disque réseau.
Je marquerai ce topic comme résolu après ce futur post. G.
grum a écrit:
Saisi directement dans ton navigateur l'url vers la photo : si elle ne s'affiche pas, c'est que ton serveur apache n'est pas correctement configuré.
Oui, dans ce cas, le navigateur se contente d'afficher l'URL que je viens de lui donner, mais pas l'image.
Je cherche comment contourner le pb via la config d'Apache ...
On progresse lentement, mais on progresse : merci. G.
Il y a deux choses :
1/ le script PHP qui doit accéder au fichier Jpeg (accès serveur - serveur) => çà se gère au niveau de PHP et Apache
2/ ton navigateur qui doit accéder au fichier Jpeg (accès client externe - serveur) => çà se gère uniquement au niveau d'Apache
Les deux accès sont complètement indépendant l'un de l'autre. Si le script arrive à accéder à la photo, ce n'est pas forcément vrai pour ton navigateur.
Saisi directement dans ton navigateur l'url vers la photo : si elle ne s'affiche pas, c'est que ton serveur apache n'est pas correctement configuré.
Par contre, là on rentre dans des problèmes de configuration système Apache/PHP qui dépassent le périmètre de Piwigo, et même si je me dépatouille pas trop mal sur Linux, mes connaissances/compétences systèmes restent limitées et pour ma part je vais avoir du mal à te dire exactement comment configurer ton environnement....
Qui plus est, lorsque ma photo s'affiche juste sous la forme de son TITRE, je N'AI PLUS ce message :
'Symbolic link not allowed or link target not accessible' (dans /etc/httpd/logs/error_log).
Ce message n'apparait que qd je passe selinux à 'enforced', mais, avec ou sans ce message seul le TITRE est affiché dans le bandeau de la galerie à la place de la vignette. Et le fait de cliquer sur ce titre ne provoque aucune erreur, mais seuls les EXIFs sont affichés. Je comprends de moins en moins ... Ne me dites pas que ces EXIFs sont stockés dans la DB qd même ?
Merci, G.
Bonsoir,
Merci pour les tuyaux Grum, mais cela ne marche pas : j'ai mis safe_mode à Off, explicitement,
et j'ai mis un paquet de diectories dans open_basedir, mais rien n'y fait.
Ce qui marche : tout (écriture, lecture) qd je vais écrire sur une nouvelle partition montée par mount, à condition de mettre selinux à permissive, après avoir installé le lien symbolique.
Qd par contre je fais un lien symbolique vers un disque réseau monté par
/sbin/mount.cifs //192.168.0.51/share /mnt/CIFS -o user=machin,password=truc,uid=48,gid=48,file_mod=0777,dir_mod=0777
- l'écriture via pLoader marche bien, et le message me dit bien que les photos sont transférées
- les droits d'accès des fichiers et dossiers photos sur le disque réseau visualisés par 'ls -l' sont tt à fait corrects
- mais l'affichage ne marche pas (voir snapshot dans un message précédent).
Tjs coincé ... G.
grodid a écrit:
D'abord aucune des 2 variables 'safe_mode' ou 'open_basedir' n'est positionnée dans ma config.
C'est normal : il s'agit du mode de fonctionnement par défaut : PHP n'autorise pas à aller voir ailleurs que dans les répertoires ou il est sensé trouver du PHP.
Il faut configurer PHP pour l'autoriser à lire ailleurs que dans le répertoire.
Et généralement, ce paramétrage se fait au niveau du fichier de configuration apache, car c'est apache qui indique à PHP le répertoire "racine" du site.
Il faut donc que tu paramètres soit PHP, soit apache pour autoriser le 'open_basedir' sur le répertoire qui t'intéresse.
Bonsoir,
D'abord merci pour vos nombreuses contributions ... qui se sont avérées inefficaces ! Dommage !
D'abord aucune des 2 variables 'safe_mode' ou 'open_basedir' n'est positionnée dans ma config.
Ensuite, je suis allé faire un tour du côté de .htaccess avec l'option +FollowSymlinks sans succès.
Puis j'ai positionné cette option dans httpd.conf, et là qqe chose à bougé au fond :
- aucun message dans /etc/httpd/logs/error_log ou /etc/httpd/logs/access_log ou /var/log/php-scripts.log
- les blocs sont bien transférés dans le dossier upload/buffer (pour la 1ère fois)
- mais j'ai tjs le message 'images non transférées' du côté pLoader ... Grrr...
- Cad que ces images sont référencées dans la DB mais qu'elles n'apparaissent pas dans la galerie de la catégorie, seul leur nom est visible à la place de la photo (voir image attachée, les 2 images de gauche).
Hummm ... Bizarre : les fichiers *.jpg sont bien là, au bon endroit dans l'arborescence ...
Et je viens de vérifier à l'aide du menu 'Férer' qu'elles sont bien visibles par tt le monde ;;-(
Inutile de préciser que j'ai relancé plusieurs fois mon serveur http pendant tous ces tests.
Conclusion, il y a encore qqe chose de coincé, mais je n'ai aucun message d'erreur visible, donc ...
C'est quoi ? Ou encore : comment faire pour savoir ?
Merci d'avance, Gilbert.
grum a écrit:
Je n'ai pas regardé le code, mais je suppose que l'API utilise du fwrite ?
Pas fwrite directement mais file_put_contents qui n'est qu'une alias de fopen() + fwrite() + fclose(). Donc les mêmes restrictions s'appliquent en effet. Bien vu grum.
Je n'ai pas regardé le code, mais je suppose que l'API utilise du fwrite ?
on peut lire dans la doc PHP (http://fr2.php.net/manual/en/function.fopen.php) :
If PHP has decided that filename specifies a local file, then it will try to open a stream on that file. The file must be accessible to PHP, so you need to ensure that the file access permissions allow this access. If you have enabled safe mode, or open_basedir further restrictions may apply.
Si on va voir ce qui est indiqué sur l'option open_basedir, on lit :
When a script tries to open a file with, for example, fopen() or gzopen(), the location of the file is checked. When the file is outside the specified directory-tree, PHP will refuse to open it. All symbolic links are resolved, so it's not possible to avoid this restriction with a symlink. If the file doesn't exist then the symlink couldn't be resolved and the filename is compared to (a resolved) open_basedir .
Peux-tu vérifier la configuration de ton PHP ?
Là comme ça je n'ai pas d'idée, je peux simplement te dire que j'utilise des liens symbolique aussi et que ça ne pose pas de soucis sur ma Debian.
Bon, j'ai repris les essais, mais sans succès, car il y a qqe chose qui n'a pas l'air de marcher avec les liens symboliques. Je m'explique :
- j'ai monté une partition externe avec mount sur mon serveur Linux (sur lequel tourne Piwigo :-) sur le mount point /mnt/DATA
- j'ai créé un dossier nommé upload dans cette partition, par la commande : mkdir -p /mnt/DATA/Storage/upload
- je vérifie que ce dossier et son parent ont les bonnes permissions (cad les mêmes que le dossier upload dans la structure Piwigo :
> ll -td /mnt/DATA/Storage/upload
drwxrwxrwx. 1 apache apache 0 sept. 15 22:36 /mnt/DATA/Storage/upload
> ll -td /mnt/DATA/Storage/
drwxrwxrwx. 1 apache apache 0 sept. 15 22:36 /mnt/DATA/Storage/
> ll -td /var/www/html/tpiwigo1/upload
drwxrwxrwx. 5 apache apache 4096 sept. 2 22:46 /var/www/html/tpiwigo1/upload
- je vais dans le dossier /var/www/html/tpiwigo1
- je renomme le dossier upload : mv upload SAVE-upload
- je créée un lien symbolique qui pointe vers la zone upload de ma partition externe, et je change les permissions de ce lien :
> ln -s /mnt/DATA/Storage/upload upload
> chown -vch apache:apache upload
Changement de propriétaire de `upload' vers apache:apache
Puis je lance un transfert avec pLoader depuis mon ordi client, et ... rien n'est transféré, car pLoader me signale que tous les transferts tombent en erreur. Mais je ne sais pas pourquoi ;-)
Quelqu'un aurait une idée ? Quelle bêtise ai-je faite (mon OS est Fedora 11) ?
Merci d'avance, G.
Bonsoir plg,
J'utilise pLoader sous Windows, version standard (la dernière - 1.6 je crois).
Merci, G.