Welcome 微信登录

首页 / 操作系统 / Linux / ThinkPHP URL自己带上参数PHPSESSID

碰到个问题,ThinkPHP项目程序本地测试没问题,传到服务器后第一次访问,页面的所有URL会自己带上类似?PHPSESSID=28954583914413546c6e881cfa7c8117 这样的参数,再点击刷新下页面后访问才正常。浏览器并没有禁止cookie,本地访问正常也证实了这点,第一猜想是服务器的环境配置与项目代码某些地方冲突所影响。检测了服务器的关于cookie的配置对比本地的,发现session.use_trans_sid这个项的配值是不同的,本地关闭,服务器是开着的。
PHP中的会话在默认情况下是使用客户端的cookie来保存session_id的,所以当客户端的cookie出现问题的时候就会影响会话了。其实会话不一定必须依赖cookie,当客户端的cookie被禁用或出现问题时,PHP会自动把session_id附加在URL中,这样再通过 session_id就能跨页使用会话变量了。但这种自动的附加也是有一定条件的,首先,在php.ini文件中的session.use_trans_sid = 1或者编译时打开了--enable-trans-sid选项,其次,运行PHP的服务器必须是UNIX/Linux系统,Windows操作系统不具备此项功能。
上面的引用就说明了这点,在linux系统下,在session.use_trans_sid开启的时候,导致项目会自己加上PHPSESSID参数来达到跨页会话。最后解决是:ini_set("session.use_trans_sid", 0); //在项目代码初始化的位置加入这句其实还有个怀疑,可能项目某配置出现问题。待查。Ps,这问题也反面教了件事,在处理跨页会话跨域会话的时候,session.use_trans_sid或许能起到奇效。鸟哥的Linux私房菜 课后练习第九章Linux原子加锁中关于SMP的困惑相关资讯      PHP 
  • PHP代码规范的10个好习惯  (12/05/2015 08:20:04)
  • PHP 性能分析与实验:性能的宏观分  (08/19/2015 19:48:24)
  • 在 Linux 命令行中使用和执行 PHP   (07/30/2015 10:07:32)
  • PHP 性能分析与实验:性能的微观分  (09/13/2015 20:49:27)
  • PHP 和 Node.js 的对决  (08/06/2015 08:51:28)
  • 在 Linux 命令行中使用和执行 PHP   (07/29/2015 13:15:46)
本文评论 查看全部评论 (0)
表情: 姓名: 字数