我在PHP中遇到了一个非常奇怪的问题。这种行为让我觉得这是一个错误,但它是如此根本,它真的不应该。
在其他代码中,我有这两个函数:
// Check admin authentication
// Used to check user has access to a page
function function_check_admin(){
function_start_session();
$isadmin = function_is_admin(NULL);
error_log("got return of ".intval($isadmin)." which is of type ".gettype($isadmin));
$isnotadmin = !(function_is_admin());
if($isnotadmin){
echo echo_error("You are not authorised to access this page.");
exit;
}
}
...
// Check if user is an administrator
// pass access parameter if access already loaded and known
function function_is_admin($access = NULL){
if (!function_is_logged_in()){
return False;
}
// Load access
if ($access === NULL)
$access = account_access();
error_log("access is ".$access);
$return = ($access <= ADMIN);
error_log("admin is ".$return);
return $return;
}
有时,当调用function_check_admin()时,它会抛出错误并退出。错误日志报告:
[error] access is 0
[error] admin is 1
[error] got return of 0 which is of type boolean, referer: ...
此外,如果我更换
return $return;
与
return TRUE;
行为和错误日志保持不变。返回值true在调用函数中突然变为false。
问题只会偶尔出现。完全相同的代码在网站的开发副本上完全正常。
最奇怪的是,当它发生时,可以通过删除与该网站相关的所有cookie来修复它。
我正在运行PHP 5.3.3(cli)(内置:2013年8月19日05:50:20)
这有什么优先权吗?任何想法可能会发生什么,以及解决方法是什么?