chdir

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

chdir更改目录

说明

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

注释

注意

如果 PHP 解释器是在启用 ZTS(Zend 线程安全)的情况下构建的,则通过 chdir() 对当前目录所做的任何更改对操作系统都不可见。所有内置的 PHP 函数仍将遵守当前目录的更改;但使用 FFI 调用的外部库函数则不会。您可以使用 php -i 或内置常量 PHP_ZTS 来判断您的 PHP 副本是否是在启用 ZTS 的情况下构建的。

参见

添加注释

用户贡献的注释 3 个注释

nesk at xakep dot ru
3 年前
在 PHP ZTS 环境下使用 FFI 时,没有标准方法可以更改库(dll/so/dylib/etc)的目录,因此为了解决此问题,您应该使用类似以下 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;
}

?>
php dot duke at qik dot nl
15 年前
在 Windows 环境下更改目录时

<?php
$path
="c:\temp"';
chdir($path);
/* getcwd() 会返回 "c:\temp" */

$path="c:\temp\"'
;
chdir($path);
/* getcwd() 会返回 "c:\temp\" */
?>

解决此不一致问题
在 chdir 之后执行 chdir('.') 始终会返回 "c:\temp"
herwin at snt dot utwente dot nl
17 年前
在使用 PHP 安全模式并尝试更改到由于安全模式限制而无法访问的目录时,该函数会简单地失败,而不会生成任何错误消息。

(在 PHP 4.3.10-16,Debian Sarge 默认情况下测试)
To Top