在Ubuntu 10.10上安装Apache / PHP时,会话文件的默认位置是什么?
在Ubuntu 10.10上安装Apache / PHP时,会话文件的默认位置是什么?
Answers:
该默认 session.save_path
设置为""
,这将评估你的系统的临时目录。请参阅https://bugs.php.net/bug.php?id=26757上的以下注释:
即将发布的版本(sic)中save_path的新默认值为空字符串,这将导致对临时目录进行探测。
您可以sys_get_temp_dir
用来返回用于临时文件的目录路径
要查找当前会话的保存路径,可以使用
参考此答案以找出此函数返回空字符串时的临时路径。
php.ini
文件,它们php_info()
会告诉您当前评估中正在使用的是哪个文件,locate php.ini
并将帮助您找到它们
首先检查session.save_path
使用ini_get('session.save_path')
或的值phpinfo()
。如果非空,则它将显示会话文件的保存位置。在许多情况下,默认情况下为空,在这种情况下,请继续阅读:
在Ubuntu或Debian机器上,如果session.save_path
未设置,则将会话文件保存在中/var/lib/php5
。
在RHEL和CentOS系统上,如果session.save_path
未设置,则会话文件将保存在/var/lib/php/session
我认为,如果您从源代码编译PHP,那么session.save_path
未设置时,会话文件将保存在其中/tmp
(尽管我自己尚未对此进行测试)。
php.ini
),我的会话正在进行/var/lib/php5/sessions
php -i | grep session.save_path
对于CLI(可能是Apache)会话保存路径。同样,给定php.ini
通常会显示“默认”路径-只是将其注释掉。
/tmp
)作为其后备/默认值。请参考php.net/manual/en/…–
/etc/php/7.0/*/php.ini
-> ;session.save_path = "/var/lib/php/sessions"
-我的意思不是说“未设置”。显然它被设置为'blank'(/ tmp)以外的其他值,并且不是空/空字符串
如果不确定所编译的默认值session.save_path
,请查看相关内容php.ini
。
通常,这将显示注释掉的默认值。
Ubuntu / Debian的旧/新php.ini
位置:
使用Apache的/etc/php5/apache2/php.ini
较早php5:使用NGINX + FPM的较早php5:/etc/php5/fpm/php.ini
使用Apache的
Ubuntu 16+ :/etc/php/*/apache2/php.ini
*
使用NGINX + FPM的Ubuntu 16+- /etc/php/*/fpm/php.ini
*
* /*/
=系统上安装的当前PHP版本。
要显示Apache下正在使用的PHP版本:
$ a2query -m | grep "php" | grep -Eo "[0-9]+\.[0-9]+"
7.3
由于PHP 7.3是此示例运行的版本,因此您可以将其用于php.ini
:
$ grep "session.save_path" /etc/php/7.3/apache2/php.ini
;session.save_path = "/var/lib/php/sessions"
或者,组合一线:
$ APACHEPHPVER=$(a2query -m | grep "php" | grep -Eo "[0-9]+\.[0-9]+") \ && grep ";session.save_path" /etc/php/${APACHEPHPVER}/apache2/php.ini
结果:
;session.save_path = "/var/lib/php/sessions"
或者,使用PHP本身在“ cli”环境中获取值(请参见下面的注释):
$ php -r 'echo session_save_path() . "\n";'
/var/lib/php/sessions
$
这些也将起作用:
php -i | grep session.save_path
php -r 'echo phpinfo();' | grep session.save_path
注意:
的“ cli”(命令行)版本php.ini
通常具有与Apache2 / FPM版本相同的默认值(至少与一样session.save_path
)。您还可以使用类似的命令将Web服务器的当前PHP模块设置回显到网页,并使用wget / curl获取信息。关于这方面的使用,有很多帖子phpinfo()
。但是,仅使用PHP接口或grep
正确php.ini
显示它的默认值会更快。
编辑:每个@aesede评论->添加了php -i
。谢谢
php -i
在CLI中进行操作以获取phpinfo()等效项。
除了另一个常见的默认位置/tmp/
是/var/lib/php5/
为Mac上的会话找到正确的路径也遇到了同样的麻烦。总而言之,我发现CLI PHP的临时目录与Apache模块的临时目录不同:Apache使用了/var/tmp
,而CLI使用了类似的东西/var/folders/kf/hk_dyn7s2z9bh7y_j59cmb3m0000gn/T
。但是,这两种方式都为sys_get_temp_dir()
我提供了session.save_path
空路时的正确路径。使用PHP 5.5.4。
上面的这些都不适合我使用带有PHP 7.2的CentOS 7的IUS存储库:
php -v
> PHP 7.2.30 (cli) (built: Apr 19 2020 00:32:29) ( NTS )
php -r 'echo session_save_path(), "\n";
>
php -r 'echo sys_get_temp_dir(), "\n";'
> /tmp
但是,会话不是保存在/tmp
文件夹中,而是保存在文件/var/lib/php/mod_php/session/
夹中:
ls /var/lib/php/mod_php/session/
> sess_3cebqoq314pcnc2jgqiu840h0k sess_ck5dtaerol28fpctj6nutbn6fn sess_i24lgt2v2l58op5kfmj1k6qb3h sess_nek5q1alop8fkt84gliie91703
> sess_9ff74f4q5ihccnv6com2a8409t sess_dvrt9fmfuolr8bqt9efdpcbj0d sess_igdaksn26hm1s5nfvtjfb53pl7 sess_tgf5b7gkgno8kuvl966l9ce7nn
根据所运行服务器的类型,它可能有所不同。要找到目录,请在php.ini文件中搜索以下内容。
upload_tmp_dir =“ c:/ wamp / tmp”
该目录可以与您不同。
<?php phpinfo() ?>
查找即可session.save_path
。