Bonjour,
Je développe des applications web en PHP, hébergées sur un serveur Apache2 sous Linux Ubuntu
Mes scripts PHP sont dans des sous-répertoires de /var/www/html, que cible mon principal virtual host Apache, et qui contient ma page d'accueil
1 2 3 4 5 6
| <VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost> |
Chaque application est dans un sous-répertoire:
/var/www/html/appli01/
/var/www/html/appli02/
/var/www/html/applixx/
Chaque répertoire applixx contient donc un index.php, et des sous-répertoires de service (js, css, classes, ...)
Certaines applications permettent à l'utilisateur d'uploader des documents.
Pour les recevoir, j'ai créé un répertoire
/var/www/html/medias/
Qui contient, lui-même, un dossier par application
/var/www/html/medias/appli01/
/var/www/html/medias/appli02/
/var/www/html/medias/applixx/
Donc, dans /var/www/html/appli01/monScript.php, par exemple, on trouvera
1 2 3 4 5
| $cible = '../medias/appli01/'.$_POST['factureNom'];
if(move_uploaded_file($_FILES['factFichier']['tmp_name'], $cible))
{
// Déplacement réussi
} |
En répertoire relatif.
Et, pour les retrouver, un test if(file_exists('../medias/appli01/fichier.ext')).
Voilà pour le décor. Jusque-là, tout fonctionne très bien, chez moi, sur mon ordi.
-----------------------------
Je viens de prendre un VPS Linux chez OVH, où je compte transposer ce schéma.
Pour mettre mes applications à jour, j'utiliserai rsync par un tunnel ssh, de chez moi vers le VPS.
Proprement emballé dans un shell script, que je lance en console, quand les tests sont satisfaisants.
Et hop, le code passe en production !
Il suffit de synchroniser la racine /var/www/html de mon ordi avec celle du VPS.
Avec l'option --delete-before, pour éviter de laisser des scripts inutiles sur le VPS
Du coup, crac, j'efface tous les fichiers uploadés par les utilisateurs dans /var/www/html/medias/
Pas très malin :-(
Je voudrais donc les stocker ailleurs, par exemple, en /var/www/depot
C'est à dire hors de la racine de mon virtual host /var/www/html
Mais toujours pouvoir y accéder, en chemin relatif, par php,
ce qui supposerait de remonter un répertoire au-dessus du documentRoot /var/www/html avant de descendre dans depot.
Apache ne suivra pas...
Car, pour mes scripts, l'original est sur mon ordi, la copie est sur le vps.
Pour les medias, c'est le contraire.
J'instaurerai un autre rsync, de sens opposé, qui ramènera les médias des clients du vps vers mon ordi.
J'insiste bien sur le chemin relatif. Car ça doit aussi bien fonctionner sur le VPS que chez moi.
Pas question de mettre une IP dans le chemin d'accès, style '127.0.0.1/depot/app01/fichier.ext'
Avant de détraquer ma config d'Apache, j'aimerais savoir si c'est possible (et aussi comment) de stocker des documents hors de la racine, tout en y accédant.
Que les médias ne soient plus dans une dépendance de /var/www/html
Et, plus largement, si, comme moi,
vous développez aussi des applications qui permettent à leurs utilisateurs de stocker des documents sur votre vps, où les stockez-vous ?
Et comment y accédez-vous ?
Merci,
Christian.
Partager