在Ubuntu 10.10上安装Apache / PHP时,会话文件的默认位置是什么?
答案 0 :(得分:63)
默认 session.save_path
设置为""
,它将评估系统的临时目录。请参阅https://bugs.php.net/bug.php?id=26757上的评论:
即将发布的版本(sic)中save_path的新默认值将为空字符串,这会导致临时目录被探测。
您可以使用sys_get_temp_dir
to return the directory path used for temporary files
要查找当前会话保存路径,您可以使用
请参阅this answer以了解此函数返回空字符串时的临时路径。
答案 1 :(得分:58)
首先使用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
中(我自己没有测试过)。
答案 2 :(得分:15)
/tmp/
以外的另一个常见默认位置是/var/lib/php5/
答案 3 :(得分:11)
如果不确定已编译的默认值,请查看Apache的php.ini:
Ubuntu / Debian当前位置:
较旧的php5安装:/etc/php5/apache2/php.ini
Ubuntu 16.XX和/或php5或php7:/etc/php/*/apache2/php.ini
通常,这将显示已注释的默认值。
或:
php -r 'echo session_save_path() . "\n";'
或:
php -i | grep session.save_path
或:
php -r 'echo phpinfo();' | grep session.save_path
来自命令行。
注 -
对于保存路径默认设置,php.ini的'cli'/命令行版本通常与Apache版本相同。您还可以使用类似的命令将Apache设置回显到wget / curl命令或网页。但是,更容易在Apache php.ini中使用grep。
编辑:Per @aesede评论 - >添加了php -i
。感谢
答案 4 :(得分:3)
在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。
答案 5 :(得分:1)
我相信它在/ tmp /。检查你的phpinfo函数,它应该在某处说session.save_path。
答案 6 :(得分:1)
以上所述对我都不起作用,它使用了带有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
答案 7 :(得分:0)
找到当前session.save_path
值的唯一surefire选项始终是在您要查找会话存储目录的确切环境中,与phpinfo()
进行检查。
原因:可以通过覆盖session.save_path
值或通过在运行时使用php.ini
对其进行设置来改变ini_set('session.save_path','/path/to/folder');
的各种情况。例如,Web服务器管理面板(例如ISPConfig,Plesk等)经常对此进行修改,以使每个网站都有其自己的带有会话文件的目录。
答案 8 :(得分:-8)
根据您运行的服务器类型,它可能会有所不同。要找到目录,请在php.ini文件中搜索以下内容。
upload_tmp_dir =“c:/ wamp / tmp”
目录可能与您有所不同。