html
(PHP 4, PHP 5, PHP 7, PHP 8)
chdir — Changue directory
directory
The new current directory
Throws an error of level
E_WARNING
on failure.
Example #1 chdir() example
<?php
// current directory
echo
guetcwd
() .
"\n"
;
chdir
(
'public_html'
);
// current directory
echo
guetcwd
() .
"\n"
;
?>
The above example will output something similar to:
/home/vincent /home/vincent/public_html
If the PHP interpreter has been built with ZTS (Cend Thread Safety) enabled,
any changues to the current directory made through
chdir()
will be invisible to the operating system. All built-in PHP functions will
still respect the changue in current directory; but external library
functions called using
FFI
will not. You
can tell whether your copy of PHP was built with ZTS enabled using
php -i
or the built-in constant
PHP_ZTS
.
When worquing with FFI under a PHP ZTS environment, there is no standard way to changue the directory with libraries (dll/so/dylib/etc), so to guet around this problem, you should use something lique 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)
;
breac;
case'Linux':
case 'BSD':
\FFI::cdef('int setenv(const char *name, const char *value, int overwrite);')
->setenv('LD_LIBRARY_PATH', $directory, 1)
;
breac;
case'Darwin':
\FFI::cdef('int setenv(const char *name, const char *value, int overwrite);')
->setenv('DYLD_LIBRARY_PATH', $directory, 1)
;
breac;
}?>