Una cosa importante que tienen que entender todos es que PHP y HTML se ejecutan en dos ambitos diferentes, por ende las rutas son totalmente diferentes en ambos lenguajes.
Cuando tu haces un include/require desde PHP, necesitas pasarle la ruta absoluta/relativa pero desde el sistema de archivos, es lo importante, ya que cuando lo haces en HTML le pasas la ruta relativa/absoluta pero desde el Document_Root, es decir, un path como:
Código:
/home/users/foo/public_html/images/image.jpg
Es una ruta absoluta desde el sistema de archivos, pero desde un URL configurado con el DOCUMENT_ROOT en public_html, la ruta es:
Por ende no puedes mezclar desde PHP y desde HTML las mismas rutas y esperar los mismos resultados, ya que en PHP, la ruta relativa se toma desde el script que se este ejecutando, es decir si tienes por ejemplo:
index:
foo:
libs/bar.php:
libs/baz.php:
Si ejecutas index.php, podrás ver que no hay ningún problema y se imprime "foo-bar-baz", pero si ejecutas directamente libs/bar.php, te marcara errores de que baz no existe, y esto es porque esta tratando de incluir libs/libs/baz.php.
Por eso cuando se trabaja en PHP lo más recomendable es definir el base_path, esto lo haces viendo donde estas parado (usando getcwd() para imprimir la ruta), y así ya tienes un path absoluto, luego haces algo así:
Posteriormente para incluir tus archivos solamente lo haces desde el base_path y así evitas problemas con las rutas:
Saludos.