Функция com_create_guid () получила ошибку на стороне сервера, но отлично работает в локальной сети, используя php

работая над созданием guid в com_create_guid() php.i'm с помощью com_create_guid() . Он отлично работает на localhost, но я вижу ошибку ниже на удаленном сервере.

Неустранимая ошибка: вызов функции undefined com_create_guid () в строке 6

мой код (guid part nly)

 $guid = com_create_guid(); echo $guid; 

есть идеи

Вы можете создавать 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

Чтобы расширить частично правильные ответы выше:

взято из http://php.net/manual/en/com.installation.php

«Из PHP 5.4.5 COM и DOTNET больше не встроены в ядро ​​php. Вы должны добавить поддержку COM в php.ini"

расширение = php_com_dotnet.dll

Вы должны запустить версию PHP менее 5, иначе вы должны работать в окне LINUX, поскольку COM – расширение на основе Windows.

Попробуйте этот скрипт и убедитесь.

 if (function_exists('com_create_guid') === true) { echo "Yes"; $guid = com_create_guid(); echo $guid; } else{ echo "Nope !"; } 

Вероятная корневая причина

В системах 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