0

http://en.wikipedia.org/wiki/Special_Folders

我在访问 php 的 fopen 流中的特殊文件夹时遇到问题。

例子

$fp = fopen("%USERPROFILE%/Desktop/text.txt", 'wb');
fwrite($fp, $data);
fclose($fp);

我尝试运行 sysinternals 进程监视器来尝试查看实际发生的情况,它看起来像这样。

C:/xampp/htdocs/test/%USERPROFILE%/Desktop/text.txt  PATH NOT FOUND

显然有两件事出了问题,PHP 将路径视为相对路径,并且未评估特殊文件夹。

4

1 回答 1

3
$fp = fopen("{$_ENV['USERPROFILE']}\\Desktop\\text.txt", 'wb');

参见$_ENV手册和也getenv()

正如 Johannes Rössel 所说,这仅在有限的情况下有效。您可以改用此内部函数:

#include<Shlobj.h>

PHP_FUNCTION(win_get_desktop_folder)
{
    char szPath[MAX_PATH];

    if (zend_parse_parameters_none() == FAILURE)
        RETURN_NULL();

    if (SUCCEEDED(SHGetSpecialFolderPathA(NULL, szPath,
        CSIDL_DESKTOP, FALSE))) {
        RETURN_STRING(szPath, 1);
    } else {
        RETURN_FALSE;
    }
}
于 2010-08-13T11:51:01.137 回答