Je suis en train de remettre en place mon mini site web. Malheureusement des dossier on dut etre deplacé.
Du coup j’aimerais savoir si il est possible de renvoyer vers un dossier externe au www/…/…/ ?
Comme dans cet exemple le chemin /home/shares/…/…/…/ qui est le chemin vers mon NAS.
<html>
<head>
<title>Film</title>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="racine/css/filmstyles.css">
</head>
<body>
<?php
$thelist=[];
$rep = './home/shares/.../.../.../';
if ($handle = opendir($rep))
{
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != ".." && !is_dir($rep.'/'.$file) ) // on s'assure que c'est bien un fichier, et pas un dossier
{
$thelist[] = $file;
}
}
setlocale (LC_COLLATE,"fr_FR.UTF-8");
sort($thelist,SORT_LOCALE_STRING); // tri vraiment alphabétique
$listfile = '';
foreach($thelist as $afile)
{
$listfile.=' <li><a href="'.$rep.'/'.$afile.'">'.$afile.'</a></li>';
}
$listfile = '<ul>'.$listfile.'</ul>';
closedir($handle);
}
?>
<h1>Liste des fichiers:</h1>
<?= $listfile ?>
<h1>Liste des Films:</h1>
<ul>
<?php echo $thelist; ?>
</ul>
</body>
</html>
C’est ce que j’ai essayé un debut mais ca me pose des petits probleme de ce type
> déc. 08 17:02:21 NAS systemd[1]: apache2.service: Control process exited, code=exited, status=1/FAILURE
> -- Subject: Unit process exited
> -- Defined-By: systemd
> -- Support: https://www.debian.org/support
> --
> -- An ExecStart= process belonging to unit apache2.service has exited.
> --
> -- The process' exit code is 'exited' and its exit status is 1.
> déc. 08 17:02:21 NAS systemd[1]: apache2.service: Failed with result 'exit-code'.
> -- Subject: Unit failed
> -- Defined-By: systemd
> -- Support: https://www.debian.org/support
> --
> -- The unit apache2.service has entered the 'failed' state with result 'exit-code'.
> déc. 08 17:02:21 NAS systemd[1]: Failed to start The Apache HTTP Server.
> -- Subject: L'unité (unit) apache2.service a échoué
> -- Defined-By: systemd
> -- Support: https://www.debian.org/support
> --
> -- L'unité (unit) apache2.service a échoué, avec le résultat failed.
> déc. 08 17:02:22 NAS sudo[30018]: pam_unix(sudo:session): session closed for user root
> déc. 08 17:02:49 NAS sudo[30099]: pi : TTY=pts/0 ; PWD=/home/pi ; USER=root ; COMMAND=/bin/nano /etc/apache2/apache2.conf
> déc. 08 17:02:49 NAS sudo[30099]: pam_unix(sudo:session): session opened for user root by pi(uid=0)
> déc. 08 17:03:16 NAS sudo[30099]: pam_unix(sudo:session): session closed for user root
> déc. 08 17:03:17 NAS sudo[30190]: pi : TTY=pts/0 ; PWD=/home/pi ; USER=root ; COMMAND=/bin/nano /etc/apache2/apache2.conf
> déc. 08 17:03:17 NAS sudo[30190]: pam_unix(sudo:session): session opened for user root by pi(uid=0)
> déc. 08 17:03:38 NAS sudo[30190]: pam_unix(sudo:session): session closed for user root
> déc. 08 17:03:43 NAS sudo[30282]: pi : TTY=pts/0 ; PWD=/home/pi ; USER=root ; COMMAND=/etc/init.d/apache2 stop
> déc. 08 17:03:43 NAS sudo[30282]: pam_unix(sudo:session): session opened for user root by pi(uid=0)
> déc. 08 17:03:43 NAS sudo[30282]: pam_unix(sudo:session): session closed for user root
> déc. 08 17:03:46 NAS sudo[30321]: pi : TTY=pts/0 ; PWD=/home/pi ; USER=root ; COMMAND=/etc/init.d/apache2 start
> déc. 08 17:03:46 NAS sudo[30321]: pam_unix(sudo:session): session opened for user root by pi(uid=0)
> déc. 08 17:03:47 NAS systemd[1]: Starting The Apache HTTP Server...
> -- Subject: L'unité (unit) apache2.service a commencé à démarrer
> -- Defined-By: systemd
> -- Support: https://www.debian.org/support
> --
> -- L'unité (unit) apache2.service a commencé à démarrer.
> déc. 08 17:03:47 NAS apachectl[30337]: apache2: Syntax error on line 176 of /etc/apache2/apache2.conf: </Directory without matching <Directory section
> déc. 08 17:03:47 NAS apachectl[30337]: Action 'start' failed.
> déc. 08 17:03:47 NAS apachectl[30337]: The Apache error log may have more information.
> déc. 08 17:03:47 NAS systemd[1]: apache2.service: Control process exited, code=exited, status=1/FAILURE
> -- Subject: Unit process exited
> -- Defined-By: systemd
> -- Support: https://www.debian.org/support
> --
> -- An ExecStart= process belonging to unit apache2.service has exited.
> --
> -- The process' exit code is 'exited' and its exit status is 1.
> déc. 08 17:03:47 NAS systemd[1]: apache2.service: Failed with result 'exit-code'.
> -- Subject: Unit failed
> -- Defined-By: systemd
> -- Support: https://www.debian.org/support
> --
> -- The unit apache2.service has entered the 'failed' state with result 'exit-code'.
> déc. 08 17:03:47 NAS systemd[1]: Failed to start The Apache HTTP Server.
> -- Subject: L'unité (unit) apache2.service a échoué
> -- Defined-By: systemd
> -- Support: https://www.debian.org/support
> --
> -- L'unité (unit) apache2.service a échoué, avec le résultat failed.
> déc. 08 17:03:47 NAS sudo[30321]: pam_unix(sudo:session): session closed for user root
> lines 1764-1825/1825 (END)
Avec cette modif :
# Sets the default security model of the Apache2 HTTPD server. It does
# not allow access to the root filesystem outside of /usr/share and /var/www.
# The former is used by web applications packaged in Debian,
# the latter may be used for local directories served by the web server. If
# your system is serving content from a sub-directory in /srv you must allow
# access here, or in any related virtual host.
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
</Directory /home/shares/public/media/>
AllowOverride None
Require all granted
</Directory>
#<Directory /srv/>
# Options Indexes FollowSymLinks
# AllowOverride None
# Require all granted
#</Directory>
Perso moi j’ai remplacé le dossier /var/www par un lien qui pointe vers le dossier de mon choix, en root, sans modifier la config d’apache pour ça. À voir ce qu’en pensent d’autres membres
evidemment ça marche
mais tu ne peux pas le faire deux fois
alros que apache sert aussi à ça : faire plusieurs sites séparés
alors que ma méthode permet d’en faire plein; et si tu vires un dossier apaches marche quand même , il te dit juste que le dossier n’est pas là
ensuite pour des raisons de sécurité, il faut toujours éviter le site web qui pointe vers un répertoire /home/user. sinon, tu es sur que tu vas avoir des visiteurs dans tous les coins de ton répertoire utilisateur.
Après, @DarkGagan, quand tu dis en root, qu’entends tu par là? Quant aux symlinks, on évite de faire des symlinks qui pointes sur des répertoires exterieur au DocumentRoot, toujours pour des raisons de sécurité. C’est une très très mauvaise pratique.
le répertoire racine d’apache ne doit jamais être un lien symbolique.
mais ce n’est pas une configuration réelle
et je peaufine les droits ( je suis toujours en 0 sur g et o )
je change toujours ce que je copie ici par rapport à la réalité.
mais j’en ai aussi un peu marre d’être paranoïd.
tout à fait
mais normalement, sauf erreur, cet utilisateur ne peut pas remonter dans d’autres dossiers , bien que dans la réalité il y a souvent un read pour others qui traine dans le /home.
Ah bon ?
C’est tellement vrai que c’est ce que font la plupart des gros hébergeurs en mutualisé.
Ce n’est pas en soi un problème. Tout dépend de l’utilisateur, des droits d’accès, de la configuration du serveur web, etc.
Il n’y a en pas sur un serveur de manière générale. À moins que l’on parle d’une installation pour du développement. Et là les exigences de sécurité ne sont pas du tout les mes puisque dans ce cas le serveur web ne sera accessible que localement.
sauf si tu l’installes chez toi
sauf si tu l’installes dans une assoc
sauf si tu l’installes dans une petite structure
sauf si tu n’as pas ton propre admin
C’est quand même mieux d’avoir un serveur de dev le plus proche possible de la prod. Sinon c’est pour ça qu’on se retrouve avec des développements pas terribles (qui sont de plus en plus majoritaires malheureusement sur le web).