Va bene così sul mio sito ho una cartella scripts che include un file php che si connette al server mysql quindi se sposto un database allora lo cambierà su tutti i file che si connettono al database.
Ho anche un'altra cartella chiamata templates. In quella cartella c'è una cima per l'intestazione e il piè di pagina. Nel model di intestazione ho scritto:
require("../scripts/connect.php");
E ho un'altra cartella chiamata, categoria. E quella cartella include l'intestazione e l'intestazione include connect. Ma poi visualizza ed errore che non ci sono tali file.
Per favore aiuto. Grazie
Una buona pratica è includere una configuration principale in tutti i file php in esecuzione, solitamente chiamati config.php 🙂
in questo file di configuration crea una costante chiamata SITE_ROOT o qualcosa di simile che punta alla cartella esatta come questa define("SITE_ROOT", "/var/www/mysite");
Quindi su qualsiasi inclusione, include_once, require, require_once lo si usa così:
require(SITE_ROOT."/scripts/connect.php");
Questo dovrebbe risolvere qualsiasi dramma relativo
Non dovresti utilizzare routes relativi con l'inclusione / richiesta, ma utilizzare una costante che definisce il ROOT_PATH del tuo sito web.
Esempio: in tutti i file che richiedono la chiamata include:
define(ROOT_PATH, '../'); include ROOT_PATH . '/scripts/connect.php';
E in /scripts/connect.php (e tutti gli altri file che saranno inclusi da qualche parte), tutti gli include dovrebbero usare ROOT_PATH (senza definirlo).