Pourquoi les fichiers PHP doivent-ils être stockés dans le dossier htdocs ? Y a-t-il une restriction à ce sujet ? Peut-on les stocker n’importe où dans l’ordinateur et y accéder ?


Cela dépend de la configuration du serveur. Chaque serveur (Apache2, Nginx, Lighttpd) est livré avec un répertoire document_root par défaut pour vous montrer quelque chose lors de la première requête. C'est une façon de voir que le serveur web fonctionne.

Après l'installation, vous pouvez ajouter des hôtes virtuels sur votre serveur et garder vos projets sous le répertoire que vous voulez. Vous pouvez les laisser dans /var/www/htdocs ou vous pouvez créer un autre répertoire qui est plus accessible pour vous. Par exemple, je stocke les projets dans le répertoire /home/web. Chaque projet a une structure de répertoire qui lui est propre, mais qui est la même pour chaque projet. Je travaille habituellement avec le framework Symfony et j'ai le répertoire web à l'intérieur du projet qui sera public. Par exemple, je vais avoir le chemin vers document_root comme ceci : /home/web/www.example.com/web (web est le répertoire public par défaut dans le framework symfony, vous pouvez le renommer comme vous voulez)


Dans /home/web/www.example.com j'ai tout ce qui est lié au projet lui-même : le répertoire src/ avec le code source lié au projet, le répertoire vendor/ qui contient 3p applications qui sont nécessaires à mon projet, tests/, app/ qui est l'endroit de configuration pour mon application.

Comme vous pouvez le voir, tous les fichiers php, les fichiers sources sont à l'intérieur de ce répertoire et ne sont pas accessibles publiquement par le serveur web. Il y a une raison de sécurité pour faire cela.

Dans le répertoire /home/web/www.example.com/web/ je n'ai qu'un seul fichier php : index.php. C'est le seul et le principal point d'entrée de l'application. C'est comme la porte unique d'une maison. C'est la seule façon d'y accéder. Chaque autre fichier source ou fichier de configuration est caché et non disponible.

Avoir plusieurs fichiers php publics augmentera vos chances d'être piraté ou d'avoir de sérieux problèmes dans votre application.

Vous pouvez tester ce que j'ai dit avec ce dépôt VM kisphp/symfony-vagrant Il a été fait pour un seul projet par serveur. vous pouvez en ajouter autant que vous voulez, vous pouvez utiliser Apache2 ou Nginx.