PHP中保存Token为字符串及token.php返回字符串异常求助
解决file_get_contents获取Token失败的问题
嘿,你的file_get_contents('example.com/token.php')没法正常工作,大概率是这几个原因,咱们一步步来修复:
1. 忘记加协议头啦
file_get_contents需要完整的URL,得带上http://或者https://,不然PHP会把它当成本地文件路径,肯定找不到。改完应该是这样:
$my_var = file_get_contents('http://example.com/token.php'); // 如果服务器支持HTTPS,优先用这个更安全 $my_var = file_get_contents('https://example.com/token.php');
2. 服务器禁用了allow_url_fopen
很多主机为了安全,会在php.ini里关掉allow_url_fopen,这时候file_get_contents就没法拉取远程内容了。换成cURL就没问题,代码给你写好:
$ch = curl_init('https://example.com/token.php'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 如果是HTTPS且证书有问题,临时关这个(生产环境记得开回去) curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $my_var = curl_exec($ch); curl_close($ch); // 顺便加个错误检查,方便排查问题 if($my_var === false) { echo "获取Token失败:" . curl_error($ch); } else { echo $my_var; }
3. token.php本身输出不对
得确保你的token.php只输出纯Token字符串,别带多余的HTML、空格或者报错信息。比如token.php应该写成这样:
<?php // 这里是你的Token生成逻辑 $token = generateYourToken(); // 只输出纯Token,trim去掉可能的多余空格 echo trim($token); ?>
把Token保存为字符串的几种方式
其实你用$my_var = ...获取到的内容本身就是字符串啦,要是需要持久化或者存在不同地方,给你几个常用方法:
1. 存到本地文件里
// 先拿到Token $token = file_get_contents('https://example.com/token.php'); // 保存到token.txt,FILE_APPEND是追加模式,去掉的话就是覆盖原有内容 file_put_contents('./token.txt', $token . PHP_EOL, FILE_APPEND);
2. 存在变量里(内存中用)
直接赋值就行,变量本身就是字符串类型,之后随便用:
$tokenString = file_get_contents('https://example.com/token.php'); // 比如打印出来或者用来验证 echo "当前服务器Token:" . $tokenString;
3. 存在Session里(用户会话中保持)
如果需要在用户的整个会话里都能拿到Token:
session_start(); $_SESSION['server_token'] = file_get_contents('https://example.com/token.php'); // 之后在其他页面直接用$_SESSION['server_token']就能取到
内容的提问来源于stack exchange,提问作者Emiljan
相关产品推荐
相关产品推荐

