CakeFest 2024: The Official CakePHP Conference

chdir

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

chdirWechseln des Verzeichnisses

Beschreibung

chdir(string $directory): bool

Wechselt das aktuelle Verzeichnis von PHP zu directory.

Parameter-Liste

directory

Das neue aktuelle Verzeichnis

Rückgabewerte

Gibt bei Erfolg true zurück. Bei einem Fehler wird false zurückgegeben.

Fehler/Exceptions

Erzeugt einen Fehler des Levels E_WARNING bei Misserfolg.

Beispiele

Beispiel #1 chdir() Beispiel

<?php

// aktuelles Verzeichnis
echo getcwd() . "\n";

chdir('public_html');

// aktuelles Verzeichnis
echo getcwd() . "\n";

?>

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

/home/vincent
/home/vincent/public_html

Anmerkungen

Achtung

Wurde der PHP-Interpreter mit ZTS (Zend Thread Safety) kompiliert, sind Änderungen des aktuellen Arbeitsverzeichnisses durch chdir() für das Betriebssystem unsichtbar. Alle eingebauten PHP Funktionen berücksichtigen die Änderung des aktuellen Verzeichnisses, aber externe Bibliotheksfunktionen, die unter Verwendung von FFI aufgerufen werden, nicht. Um festzustellen, ob das verwendete PHP mit ZTS kompiliert wurde, kann php -i oder die eingebaute Konstante PHP_ZTS verwendet werden.

Siehe auch

  • getcwd() - Ermittelt das aktuelle Arbeitsverzeichnis

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