Pregunta

Mientras limpiaba algunos scripts php antiguos, noté un comportamiento extraño con las declaraciones require / include cuando trato de usar variables.

En el servidor en vivo, el siguiente código funciona bien ...

<?php
$test = "http://localhost/elearning/trunk/mypage.php";
require "$test";
?>

... pero en mi instalación de XAMPP ((paquete básico) versión 1.6.7) recibo el siguiente error:

Advertencia: require () [function.require]: el acceso al archivo URL está deshabilitado en la configuración del servidor en C: \ Documents and Settings \ username \ Desktop \ xampp-win32-1.6.7 \ xampp \ htdocs \ elearning \ trunk \ test.php en la línea 22

Advertencia: requiere ( http: //localhost/elearning/trunk/mypage.php ) [function.require]: no se pudo abrir la secuencia: no se pudo encontrar un contenedor adecuado en C: \ Documents and Settings \ username \ Desktop \ xampp-win32-1.6.7 \ xampp \ htdocs \ elearning \ trunk \ test.php en línea 22

Error grave: require () [function.require]: se requiere una apertura fallida ' http: // localhost /elearning/trunk/mypage.php '(include_path =' .; C: \ Documents and Settings \ username \ Desktop \ xampp-win32-1.6.7 \ xampp \ php \ pear \ ') en C: \ Documents and Settings \ username \ Desktop \ xampp-win32-1.6.7 \ xampp \ htdocs \ elearning \ trunk \ test.php en la línea 22

Si copio + pego http: //localhost/elearning/trunk/mypage.php (directamente desde el error) en mi navegador, mypage.php se carga. ¿Es este un error en mi configuración o en mi enfoque?

¿Fue útil?

Solución

No puede usar rutas que comienzan con http: // en algunos servidores debido a la seguridad. Lo que quiere usar en su lugar es una ruta de directorio.

Puede obtener su ruta de directorio actual haciendo algo como
echo $ _SERVER ['DOCUMENT_ROOT'];

que le dará su ruta de directorio desde la carpeta raíz del servidor. Esa es la ruta que desea utilizar para incluir / requerir cosas.


Si no entendiste bien eso, prueba esto.

Hay dos tipos de rutas:

Rutas de la World Wide Web:
http://example.com/directory/file.php

Rutas de directorio del servidor:
/ home / usr / www / site / html /

La ruta del directorio del servidor es donde se encuentran sus archivos en el disco duro del servidor. Al igual que el disco duro de su computadora, nunca cambia a menos que mueva los archivos. Por otro lado, la Ruta de la World Wide Web (la que todos usan para acceder a su sitio web) puede cambiar según el dominio que esté utilizando, hacia dónde apunta su Raíz de documentos, Mod Reescribe y más.

Nota: Document Root es el directorio más alto desde el que su servidor sirve archivos. Entonces, si tuviera index.php en la raíz de su documento, se mostraría así en la web: http://example.com/index.php .

Cuando PHP busca un archivo, usa la ruta del directorio del servidor, porque se está ejecutando en el servidor. Cuando Javascript, que se ejecuta desde la computadora del usuario, quiere buscar un archivo, utiliza la ruta de acceso a la World Wide Web para acceder a él, porque no está accediendo a él desde el servidor.

Realmente espero que en algún lugar, algo tenga sentido.

Otros consejos

prueba requiere " ./ mypage.php " no todo el directorio exacto

PHP no es lo suficientemente inteligente como para saber que se incluye desde el mismo servidor cuando usa la notación de URL de esa manera, por lo que cree que está tomando archivos de un servidor separado (lo que puede ser peligroso).

La configuración de su servidor está configurada para no permitir la carga de estos archivos externos (evidente por el mensaje de error "El acceso al archivo URL está deshabilitado en la configuración del servidor"), por lo que está fallando.

Dado que está en el mismo servidor, simplemente puede usar rutas relativas, como:

require_once 'mypage.php'

No use una ruta como esa ... use una ruta relativa o absoluta.

Ejemplo

require 'mypage.php'
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top