2011-03-06 19 views
5

Este problema todavía no se solucionaarchivo absoluto Ruta

Un tutorial de vídeo PHP estoy siguiendo es la construcción de un archivo llamado initialize.php en el que se utiliza el PHP pre-definido DIRECTORY_SEPARATOR constante y luego definir un site_root. La raíz_sitio es la ruta de archivo absoluta (no la ruta del servidor web) para que PHP localice los archivos que necesita. Él nos dio el siguiente código

defined('DS') ? null : define('DS', DIRECTORY_SEPARATOR); 

    defined('SITE_ROOT') ? null : 
    define ('SITE_ROOT', DS.'Users'.DS.'kevin'.DS.'Sites'.DS.'photo_gallery'); 

Estoy asumiendo la ruta del archivo en su ordenador es la raíz/usuarios/Kevin/sitios/fotogalería

No estoy construyendo el sitio en mi equipo, sino directamente en línea . No sé qué ruta de archivo insertar en su lugar.

Como él hizo hincapié en que no es la ruta del servidor web, sino la ruta del sistema de archivos, ¿qué debo poner en su lugar. Solo el nombre de dominio así.

define('SITE_ROOT', DS. 'www.example.com'); 

¿No desea la ruta del servidor web pero los archivos están ubicados en línea? entonces no lo entiendo

ACTUALIZACIÓN

El video tutorial utiliza el siguiente código

defined('DS') ? null : define('DS', DIRECTORY_SEPARATOR); 

defined('SITE_ROOT') ? null : 
define ('SITE_ROOT', DS.'Users'.DS.'kevin'.DS.'Sites'.DS.'photo_gallery'); 
defined('LIB_PATH') ? null : define('LIB_PATH',SITE_ROOT.DS.'includes'); 

que utiliza este código:

defined('DS') ? null : define('DS', DIRECTORY_SEPARATOR); 

defined('SITE_ROOT')? null: define('SITE_ROOT', realpath(dirname(__FILE__))); 
defined('LIB_PATH') ? null : define('LIB_PATH',SITE_ROOT.DS.'includes'); 

Tengo este mensaje de error

require_once(/hsphere/local/home/c263430/quoralist.com/includes/includes/config.php): failed to open stream: No such file or directory in /hsphere/local/home/c263430/quoralist.com/includes/initialize.php on line 11 Fatal error: require_once(): Failed opening required '/hsphere/local/home/c263430/quoralist.com/includes/includes/config.php' (include_path='.:/hsphere/shared/apache/libexec/php5ext/php/') in /hsphere/local/home/c263430/quoralist.com/includes/initialize.php on line 11

ACTUALIZACIÓN usando las 3 ediciones más adelante por experimentX, así como la siguiente

define('SITE_ROOT', DS.'hsphere'.DS.'local'.DS.'home'.DS.'c263430'.DS.'quoralist.com'); 

siempre que recibieron el mensaje de error

Warning: require_once(LIB_PATH/config.php): failed to open stream: No such file or directory in /hsphere/local/home/c263430/quoralist.com/includes/initialize.php on line 11 Fatal error: require_once(): Failed opening required 'LIB_PATH/config.php' (include_path='.:/hsphere/shared/apache/libexec/php5ext/php/') in /hsphere/local/home/c263430/quoralist.com/includes/initialize.php on line 11

Además,

+0

Añadir el enlace del video = O – Joseadrian

+0

está fuera de línea, lo siento – Leahcim

+0

Micahel He actualizado la respuesta –

Respuesta

10

¿Qué tal

defined('SITE_ROOT')? null: define('SITE_ROOT', realpath(dirname(__FILE__))); 

echo SITE_ROOT; 

En lugar de define('SITE_ROOT', 'www.domain.com') debes define('SITE_ROOT', realpath(dirname(__FILE__)).

www.domain.com es la url base (de su sitio) mientras que realpath(dirname(__FILE__)) es la ruta de archivo absoluta de FILE donde está definida. Usando esta ruta, puede configurar una CARPETA RAÍZ para su sitio.

Por ejemplo: cannnot hace unlink('www.example.com\img1.jpg') eliminar img1

Debe hacer unlink(SITE_ROOT.DS.'img1.jpg');

Similarmente para move_uploaded_file o cualquier otra función de directorio o archivo. es decir, sus archivos están siendo movidos y eliminados por la computadora del servidor (ya que el script php se ejecuta en el servidor), por lo que se requiere una ruta de archivo absoluta.

Usando esta ruta absoluta, puede navegar a la carpeta y acceder a los archivos en el servidor.

[ACTUALIZACIÓN]

defined('DS') ? null : define('DS', DIRECTORY_SEPARATOR); 

defined('SITE_ROOT') ? null : 
    define ('SITE_ROOT', DS.'Users'.DS.'kevin'.DS.'Sites'.DS.'photo_gallery'); 

A pesar de que no es dueño de Mac, el web-root es Users/kevin/Sites/ en Mac y el Users/kevin/Sites/photogallery es la raíz del sitio.

El tutor lo sabe, así que lo está haciendo. Pero es posible que no lo sepamos cuando nuestro proyecto se cargue en un servidor web, por lo que

defined('SITE_ROOT')? null: define('SITE_ROOT', realpath(dirname(__FILE__))); 

Sería lo más apropiado.

Y en cuanto a DS, es simplemente una CONSTANTE (DIRECTORY_SEPARATOR), que se define porque DIRECTORY_SEPARATOR sería demasiado largo para escribir. es decir,

SITE_ROOT'.DIRECTORY_SEPARATOR.'Users'.DIRECTORY_SEPARATOR.'kevin'.DIRECTORY_SEPARATOR.'Sites'.DIRECTORY_SEPARATOR.'photo_gallery' 

Así, se definen antes de definir sitio raíz

defined('DS')? null: define('DS', DIRECTORY_SEPARATOR); 
defined('SITE_ROOT')? null: define('SITE_ROOT', realpath(dirname(__FILE__))); 

Como el tutorial se realiza en MAC DIRECTORY_SEPARATOR es /. Y la muestra se realiza en localhost, el tutor conoce la ruta de acceso absoluta de su servidor web por lo que está haciendo

[ERROR: UPDATE]

se produjo el error, porque la definición de esto en includes/initialize.php asume que su su SITE_ROOT es yourwebroot/yourproject/includes donde debe haber sido yourwebroot/yourproject/includes.

Hay dos maneras, una forma es

para poner initialize.php en yourwebroot/yourproject

Y la otra forma es

defined('SITE_ROOT')? null: define('SITE_ROOT', realpath(dirname(__FILE__)).DS."..".DS); 

O

defined('SITE_ROOT')? null: define('SITE_ROOT', DS.'..'.DS.realpath(dirname(__FILE__))); 

(no estoy seguro pero uno de ellos debería funcionar)

también probar este

defined('SITE_ROOT')? null: define('SITE_ROOT', '/../'.realpath(dirname(__FILE__))); 
+0

muchas gracias. Soy un novato podrías explicar un poco más? ¿Tengo que sustituir en mi nombre de dominio real a su ejemplo? como SITE_ROOT = www.example.com (dirname (__ FILE__))? o como lo haría muy apreciado si puedes ayudar más. Por favor, edite su respuesta para mostrarme exactamente a dónde va el dominio. – Leahcim

+0

@Michal aquí va ... después de 5 minutos –

+0

así que nunca tengo que usar mi nombre de dominio real www.example.com? ¿Son esas palabras "realpath" "dirname" etc. términos PHP que de alguna manera recogen mi nombre de dominio? – Leahcim

1

Lo siento, tengo la respuesta para imágenes no exhiben

en photograph.php, basta con retirar DS

public function image_path() { 
    return $this->upload_dir.$this->filename; 
} 

línea de trabajo es:

defined('SITE_ROOT')? null: define('SITE_ROOT', realpath(dirname(__FILE__)).DS."..".DS); 

Gracias!

Cuestiones relacionadas