PHP 8.6.0 Beta 1 is available for testing

chdir

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

chdirИзменяет рабочий каталог

Описание

function chdir(string $directory): bool

Функция изменяет текущий рабочий каталог PHP на каталог directory.

Список параметров

directory

Новый текущий каталог.

Возвращаемые значения

Функция возвращает true , если выполнилась успешно, или false , если возникла ошибка.

Ошибки

В случае неудачного выполнения функция выдаёт ошибку уровня E_WARNING .

Примеры

Пример #1 Пример использования функции chdir()

<?php
// Текущий рабочий каталог
echo getcwd() . "\n";
chdir('public_html');
// Текущий рабочий каталог
echo getcwd() . "\n";
?>

Вывод приведённого примера будет похож на:

/home/vincent
/home/vincent/public_html

Примечания

Предостережение

Операционная система не заметит изменений в текущем каталоге, которые сделали через функцию chdir(), если PHP-интерпретатор собрали с поддержкой потокобезопасного режима ZTS (Zend Thread Safety). Все встроенные PHP-функции по-прежнему будут учитывать изменения в текущем каталоге; это не относится к вызываемым функциям внешних библиотек, которые подключили через модуль FFI. Собрали ли PHP с поддержкой ZTS, покажет команда php -i или встроенная константа PHP_ZTS .

Смотрите также

  • getcwd() - Получает текущую рабочую директорию

Нашли ошибку?

ИнструкцияИсправлениеСообщение об ошибке
+Добавить

Примечания пользователей 1 note

up
11
nesk at xakep dot ru
5 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;
}
?>
+Добавить

AltStyle によって変換されたページ (->オリジナル) /