php_uname
проверяет режим работы PHP , а не ОС .
Так что, если ваша ОС 64-битная, но php_uname
возвращает i586, потому что вы используете 32-битную версию PHP .
Знание архитектуры PHP, возможно, важнее, чем знание архитектуры ОС. Например, если вы используете 64-битную ОС для принятия решений в коде, вы можете найти код, который не работает на 64-битной ОС, когда PHP выполняется в 32-битном режиме (как сейчас). Это именно та ситуация, в которой вы находитесь, вы ожидали получить 64-битный результат, но получили 32-битный результат из-за режима работы PHP.
Реальным решением вашей проблемы является загрузка и установка 64-битной версии PHP на 64-битной ОС для просмотра 64-битных результатов.
Вот простая 1 строка кода, чтобы определить, выполняется ли PHP в 64-битной или 32-битной версии:
empty(strstr(php_uname("m"), '64')) ? $php64bit = false : $php64bit = true;
После выполнения строки выше $php64bit
будет либо true
, либо false
.
Вот многострочная версия того же кода:
// detect which version of PHP is executing the script (32 bit or 64 bit)
if(empty(strstr(php_uname("m"), '64'))){
$php64bit = false;
}else{
$php64bit = true;
}
Это работает путем проверки php_uname
на наличие 64
, которое будет найдено, если PHP выполняется в 64-битном режиме.