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将路径视为相对路径,而特殊文件夹未被评估。
答案 0 :(得分:3)
$fp = fopen("{$_ENV['USERPROFILE']}\\Desktop\\text.txt", 'wb');
正如JohannesRö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;
}
}