name - php path to file
php cómo subir un nivel en dirname(__ FILE__) (8)
Para PHP <5.3 use:
$upOne = realpath(dirname(__FILE__) . ''/..'');
O en PHP 5.3+ use:
$upOne = realpath(__DIR__ . ''/..'');
Tengo una estructura de carpetas de la siguiente manera:
mydomain.com
->Folder-A
->Folder-B
Tengo una cadena de la base de datos que es ''../Folder-B/image1.jpg'', que apunta a una imagen en Folder-B.
Dentro de una secuencia de comandos en la Carpeta-A, estoy usando dirname ( FILE ) para obtener el nombre del archivo y obtengo mydomain.com/Folder-A
. Dentro de este script, necesito obtener una cadena que diga ''mydomain.com/Folder-B/image1.jpg
. Lo intenté
$path=dirname(__FILE__).''/''.''../Folder-B/image1.jpg'';
Esto aparece como mydomain.com%2FFolder-A%2F..%2FFolder-B%2Fimage1.jpg
Esto es para un botón de compartir en Facebook, y esto no logra obtener la imagen correcta. ¿Alguien sabe como obtener el camino correctamente?
Edición: espero obtener una url >>> mydomain.com% 2FFolder-B% 2Fimage1.jpg
Para Quien, se desactiva con el entorno de alojamiento compartido y aún existe la posibilidad de tener PHP actual menos de 7.0. Quién no tiene nombre de dirname( __FILE__, 2 );
Es posible usar lo siguiente.
function dirname_safe($path, $level = 0){
$dir = explode(DIRECTORY_SEPARATOR, $path);
$level = $level * -1;
if($level == 0) $level = count($dir);
array_splice($dir, $level);
return implode($dir, DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR;
}
print_r(dirname_safe(__DIR__, 2));
Podrías usar la función dirname de PHP. <?php echo dirname(__DIR__); ?>
<?php echo dirname(__DIR__); ?>
. Eso le dará el nombre del directorio principal de __DIR__
, que almacena el directorio actual.
Prueba esto
dirname(dirname( __ FILE__))
Edición: se eliminó "./" porque no es la sintaxis correcta. Sin ella, funciona perfectamente.
Puedes usar realpath
para eliminar partes innecesarias:
// One level up
echo str_replace(realpath(dirname(__FILE__) . ''/..''), '''', realpath(dirname(__FILE__)));
// Two levels etc.
echo str_replace(realpath(dirname(__FILE__) . ''/../..''), '''', realpath(dirname(__FILE__)));
En Windows también reemplaza /
con /
si es necesario en la URL.
Si tienes php 7.0+ puedes usar niveles.
dirname( __FILE__, 2 )
con el segundo parámetro puede definir la cantidad de niveles que desea volver.
Un nivel más arriba, he usado:
str_replace(basename(__DIR__) . ''/'' . basename(__FILE__), '''', realpath(__FILE__)) . ''/required.php'';
o para php <5.3:
str_replace(basename(dirname(__FILE__)) . ''/'' . basename(__FILE__), '''', realpath(__FILE__)) . ''/required.php'';
Yo uso esto, si hay una ruta absoluta (este es un ejemplo):
$img = imagecreatefromjpeg($_SERVER[''DOCUMENT_ROOT'']."/Folder-B/image1.jpg");
Si hay una imagen para mostrar, esto es suficiente:
echo("<img src=''/Folder-B/image1.jpg''>");