Функция com_create_guid() получила ошибку на стороне сервера, но отлично работает в локальной сети, используя php
работает над созданием guid в файле php.i'm с помощью com_create_guid()
. Он отлично работает на localhost, но я вижу ошибку ниже на удаленном сервере.
Неустранимая ошибка: вызов функции undefined функции com_create_guid() в строке 6
мой код (guid part nly)
$guid = com_create_guid();
echo $guid;
любые идеи
Ответы
Ответ 1
Вы можете создать GUID вручную:
function getGUID(){
if (function_exists('com_create_guid')){
return com_create_guid();
}
else {
mt_srand((double)microtime()*10000);//optional for php 4.2.0 and up.
$charid = strtoupper(md5(uniqid(rand(), true)));
$hyphen = chr(45);// "-"
$uuid = chr(123)// "{"
.substr($charid, 0, 8).$hyphen
.substr($charid, 8, 4).$hyphen
.substr($charid,12, 4).$hyphen
.substr($charid,16, 4).$hyphen
.substr($charid,20,12)
.chr(125);// "}"
return $uuid;
}
}
Использование:
$GUID = getGUID();
echo $GUID;
Следовать:
http://guid.us/GUID/PHP
http://php.net/manual/en/function.com-create-guid.php
Ответ 2
Чтобы продлить частично правильные ответы выше:
взято из http://php.net/manual/en/com.installation.php
"Из PHP 5.4.5 COM и DOTNET больше не встроены в ядро php. Вы должны добавить поддержку COM в php.ini"
расширение = php_com_dotnet.dll
Ответ 3
Вы должны запустить версию PHP меньше 5, иначе вы должны работать в окне LINUX, поскольку COM - расширение на основе Windows.
Попробуйте это script и убедитесь, что.
if (function_exists('com_create_guid') === true)
{
echo "Yes";
$guid = com_create_guid();
echo $guid;
}
else{
echo "Nope !";
}
Ответ 4
Вероятная корневая причина
В системах Windows, у которых нет загруженного php_com_dotnet.dll(проверьте файл php.ini), а также не систем Windows, вы не сможете использовать com_create_guid().
Решение
Я собрал и модифицировал следующий код как кульминацию некоторых из моих собственных идей и изменений (таких как поддержка скобок), а также многочисленные предложения из нескольких источников для реализации кросс-платформы и функции перекрестной PHP-версии, связанное с UID. Задание false в вызове функции возвращает UID, завернутый в фигурные скобки ( "стиль Windows" ). Указание true или ничего не вернет UID без брекетов.
Совместимость
Поддерживается PHP с версии 4.2 вверх. Это не зависит от ОС и выберет "лучший" метод на основе ОС, версии PHP и доступных библиотек/функций PHP (включая вызов альтернативной опции, если библиотека dotnet не загружена в PHP Windows).
Код
function GUIDv4 ($trim = true)
{
$lbrace = chr(123); // "{"
$rbrace = chr(125); // "}"
// Windows
if (function_exists('com_create_guid') === true)
{ // extension=php_com_dotnet.dll
if ($trim === true)
{
return trim(com_create_guid(), '{}');
}
else
{
return com_create_guid();
}
}
// OSX/Linux and Windows with OpenSSL but without com classes loaded (extension=php_com_dotnet.dll loaded in php.ini)
if (function_exists('openssl_random_pseudo_bytes') === true)
{
$data = openssl_random_pseudo_bytes(16);
$data[6] = chr(ord($data[6]) & 0x0f | 0x40); // set version to 0100
$data[8] = chr(ord($data[8]) & 0x3f | 0x80); // set bits 6-7 to 10
if ($trim === true)
{
return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));
}
else
{
return $lbrace.vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4)).$rbrace;
}
}
// Fallback (PHP 4.2+)
mt_srand((double)microtime() * 10000);
$charid = strtolower(md5(uniqid(rand(), true)));
$hyphen = chr(45); // "-"
$guidv4 = substr($charid, 0, 8).$hyphen.
substr($charid, 8, 4).$hyphen.
substr($charid, 12, 4).$hyphen.
substr($charid, 16, 4).$hyphen.
substr($charid, 20, 12);
if ($trim === true)
{
return $guidv4;
}
else
{
return $lbrace.$guidv4.$rbrace;
}
}
Использование
$newGUID = GUIDv4([false]); // false for braces, true or nothing for no braces
Дополнительная информация
http://php.net/manual/en/function.com-create-guid.php
http://php.net/manual/en/com.installation.php
http://guid.us/GUID/PHP