我想知道如何为windows,mac,linux上的每个值确定默认值:
upload_tmp_dir
他们还有其他任何涉及你知道的文件系统路径的php.ini变量吗?
根据我对Windows的调查,似乎session.save_path是C:\ Windows \ Temp。这是一个安全的位置吗?这什么时候被删除?
答案 0 :(得分:1)
session.save_path
对于session.save_path
,默认情况下使用php.ini定义的值,否则路径在此处确定:
https://github.com/php/php-src/blob/master/ext/session/mod_files.c#L264
调用此处定义的php_get_temporary_directory
:
https://github.com/php/php-src/blob/master/main/php_open_temporary_file.c#L192
GetTempPath
来获取临时文件夹路径(请参阅http://msdn.microsoft.com/en-us/library/windows/desktop/aa364992%28v=vs.85%29.aspx)/tmp
soap.wsdl_cache_dir
soap.wsdl_cache_dir
尝试使用已定义的php.ini值。如果没有找到,则会通过以下代码默认为/tmp
:
https://github.com/php/php-src/blob/master/ext/soap/soap.c#L520
在此处详细了解STD_PHP_INI_ENTRY
:http://docstore.mik.ua/orelly/webprog/php/ch14_12.htm
upload_tmp_dir
upload_tmp_dir
设置为NULL(但将使用php.ini覆盖)以及许多默认值:
https://github.com/php/php-src/blob/master/main/main.c#L579
STD_PHP_INI_ENTRY("upload_tmp_dir", NULL, PHP_INI_SYSTEM, OnUpdateStringUnempty, upload_tmp_dir, php_core_globals, core_globals)
并在文件上传中使用:
https://github.com/php/php-src/blob/master/main/rfc1867.c#L1006
fd = php_open_temporary_fd_ex(PG(upload_tmp_dir), "php", &temp_filename, 1 TSRMLS_CC);
此函数,如果传递空upload_tmp_dir
,则默认使用我们前面提到的php_get_temporary_directory
函数。
有很多。快速查看https://github.com/php/php-src/blob/master/main/main.c会显示大量使用路径的默认配置(open_basedir
,include_path
,sys_temp_dir
,extension_dir
和error_log
来命名一些)。此外,扩展还有自己的配置集合,可以包含路径参数。
在Windows上打开临时文件时,PHP会将权限设置为运行您的Web服务器的用户专有权限,这应该只表示它,并且管理员可以访问该文件的内容:
https://github.com/php/php-src/blob/master/main/php_open_temporary_file.c#L149