PHP Conference Nagoya 2025

chdir

(PHP 4, PHP 5, PHP 7, PHP 8)

chdirCambia de directorio

Descripción

chdir(string $directory): bool

Cambia el directorio actual de PHP a directorio.

Parámetros

directorio

El nuevo directorio actual.

Valores devueltos

Devuelve true en caso de éxito o false en caso de error.

Errores/Excepciones

Emite un error de nivel E_WARNING en caso de error.

Ejemplos

Ejemplo #1 chdir() ejemplo

<?php

// directorio actual
echo getcwd() . "\n";

chdir('public_html');

// directorio actual
echo getcwd() . "\n";

?>

El resultado del ejemplo sería algo similar a:

/home/vincent
/home/vincent/public_html

Notas

Precaución

Si el intérprete de PHP ha sido compilado con ZTS (Seguridad de Hilos Zend) habilitada, cualquier cambio en el directorio actual realizado mediante chdir() será invisible para el sistema operativo. Todas las funciones integradas de PHP seguirán respetando el cambio en el directorio actual; pero las funciones de bibliotecas externas llamadas mediante FFI no lo harán. Puedes saber si la copia de PHP fue compilada con ZTS habilitada usando php -i o la constante incorporada PHP_ZTS.

Ver también

  • getcwd() - Obtiene el directorio actual en donde se esta trabajando

add a note

User Contributed Notes 1 note

up
9
nesk at xakep dot ru
4 years ago
When working with FFI under a PHP ZTS environment, there is no standard way to change the directory with libraries (dll/so/dylib/etc), so to get around this problem, you should use something like this polyfill:

<?php

$directory
= 'path/to/libraries';

switch (
\PHP_OS_FAMILY) {
case
'Windows':
\FFI::cdef('extern unsigned char SetDllDirectoryA(const char* lpPathName);', 'kernel32.dll')
->
SetDllDirectoryA($directory)
;
break;

case
'Linux':
case
'BSD':
\FFI::cdef('int setenv(const char *name, const char *value, int overwrite);')
->
setenv('LD_LIBRARY_PATH', $directory, 1)
;
break;

case
'Darwin':
\FFI::cdef('int setenv(const char *name, const char *value, int overwrite);')
->
setenv('DYLD_LIBRARY_PATH', $directory, 1)
;
break;
}

?>
To Top