(PHP 4, PHP 5, PHP 7, PHP 8)
chdir — Cambia de directorio
Cambia el directorio actual de PHP a
directorio.
directorioEl nuevo directorio actual.
Emite un error de nivel E_WARNING en caso de error.
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
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 .
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;
}
?>