默认的php.ini变量路径位置(session.save_path,soap.wsdl_cache_dir,upload_tmp_dir)

时间:2014-06-20 13:34:52

标签: php

我想知道如何为windows,mac,linux上的每个值确定默认值:

  • session.save_path
  • soap.wsdl_cache_dir
  • upload_tmp_dir

    1. 他们还有其他任何涉及你知道的文件系统路径的php.ini变量吗?

    2. 根据我对Windows的调查,似乎session.save_path是C:\ Windows \ Temp。这是一个安全的位置吗?这什么时候被删除?

1 个答案:

答案 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

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_ENTRYhttp://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函数。

还有他们的任何其他php.ini变量涉及你知道的文件系统上的路径吗?

有很多。快速查看https://github.com/php/php-src/blob/master/main/main.c会显示大量使用路径的默认配置(open_basedirinclude_pathsys_temp_dirextension_direrror_log来命名一些)。此外,扩展还有自己的配置集合,可以包含路径参数。

根据我对Windows的调查,似乎session.save_path是C:\ Windows \ Temp。这是一个安全的位置吗?什么时候被删除?

在Windows上打开临时文件时,PHP会将权限设置为运行您的Web服务器的用户专有权限,这应该只表示它,并且管理员可以访问该文件的内容:

https://github.com/php/php-src/blob/master/main/php_open_temporary_file.c#L149