PHP 8.4.0 RC4 available for testing

chdir

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

chdirMuda o diretório

Descrição

chdir(string $directory): bool

Muda o diretório atual do PHP para directory.

Parâmetros

directory

O novo diretório atual

Valor Retornado

Retorna true em caso de sucesso ou false em caso de falha.

Erros/Exceções

Dispara um aviso E_WARNING em caso de falha.

Exemplos

Exemplo #1 Exemplo de chdir()

<?php

// diretório atual
echo getcwd() . "\n";

chdir('public_html');

// diretório atual
echo getcwd() . "\n";

?>

O exemplo acima produzirá algo semelhante a:

/home/vincent
/home/vincent/public_html

Notas

Cuidado

Se o interpretador PHP foi compilado com ZTS (Zend Thread Safety) habilitado, quaisquer mudanças ao diretório atual através de chdir() serão invisíveis ao sistema operacional. Todas as funções internas do PHP ainda irão respeitar a mudança do diretório atual; mas funções de bibliotecas externas, chamadas usando FFI não irão. Pode-se verificar se a cópia do PHP foi compilada com ZTS habilitado usando o comando php -i ou a constante interna PHP_ZTS.

Veja Também

adicione uma nota

Notas Enviadas por Usuários (em inglês) 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