PHP 8.5.0 RC 2 available for testing

chdir

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

chdir β€” Cambia 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

Esta funciΓ³n retorna true en caso de Γ©xito o false si ocurre un 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";

?>

Resultado del ejemplo anterior es 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() - Devuelve el directorio de trabajo actual

οΌ‹add a note

User Contributed Notes 1 note

up
10
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