【发布时间】:2014-12-19 19:07:39
【问题描述】:
我想要做的是让来自客户端程序的会话对服务器程序可用。
两个程序都运行在同一个 Apache 站点上,所以会话文件、权限等的配置都是一样的。
测试服务器程序:
<?php
session_name('main');
session_start();
echo '<pre>'.print_r($_COOKIE, true).'</pre>';
?>
测试客户端程序:
<?php
session_name('main');
session_start();
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_COOKIE, 'main='.session_id());
curl_setopt($ch, CURLOPT_POSTFIELDS, 'A=1&B=2');
$result=curl_exec($ch);
curl_close($ch);
echo $result;
?>
行为:
- 如前所述,对服务器的 curl 调用超时。
- 如果我从服务器中删除 session_start(),服务器会按预期返回 cookie 值。
- 当我从客户端删除 curl_setopt($ch, CURLOPT_COOKIE, 'main='.session_id()) 时,每次调用服务器都会按预期创建一个新的会话文件。
- 我添加了 curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile) 确保 $cookiefile 存在并且是可写的,行为没有变化。
所以这是不可能的吗?我不需要写任何 cookie 或取回 cookie 信息,我只需要服务器程序能够访问与客户端相同的会话信息。
【问题讨论】: