CakeFest 2024: The Official CakePHP Conference

chdir

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

chdirCambia directory

Descrizione

chdir(string $directory): bool

Cambia la directory corrente di PHP in directory.

Elenco dei parametri

directory

La nuova directory corrente

Valori restituiti

Restituisce true in caso di successo, false in caso di fallimento.

Errori/Eccezioni

Genera un errore di livello E_WARNING in caso di errore.

Esempi

Example #1 Esempio di chdir()

<?php

// directory corrente
echo getcwd() . "\n";

chdir('public_html');

// directory corrente
echo getcwd() . "\n";

?>

Il precedente esempio visualizzerà qualcosa simile a:

/home/vincent
/home/vincent/public_html

Note

Attenzione

Se l'interprete PHP è stato creato con ZTS (Zend Thread Safety) abilitato, qualsiasi modifica alla directory corrente effettuata tramite chdir() sarà invisibile al sistema operativo. Tutte le funzioni PHP integrate rispetteranno comunque il cambiamento nella directory corrente; ma le funzioni di libreria esterne chiamate usando FFI non lo faranno. Si può verificare se la propria copia di PHP è stata creata con ZTS usando php -i o la costante built-in PHP_ZTS.

Vedere anche:

  • getcwd() - Restituisce la directory di lavoro in uso

add a note

User Contributed Notes 3 notes

up
9
nesk at xakep dot ru
3 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;
}

?>
up
-14
php dot duke at qik dot nl
15 years ago
When changing dir's under windows environments:

<?php
$path
="c:\temp"';
chdir($path);
/* getcwd() gives you back "c:\temp" */

$path="c:\temp\"'
;
chdir($path);
/* getcwd() gives you back "c:\temp\" */
?>

to work around this inconsistency
doing a chdir('.') after the chdir always gives back "c:\temp"
up
-30
herwin at snt dot utwente dot nl
17 years ago
When using PHP safe mode and trying to change to a dir that is not accessible due to the safe mode restrictions, the function simply fails without generating any kind of error message.

(Tested in PHP 4.3.10-16, Debian Sarge default)
To Top