uniqid - La función com_create_guid() tiene un error en el lado del servidor pero funciona bien en local usando php
uniqid() laravel (4)
Debe estar ejecutando la versión de PHP menos de 5; de lo contrario, debe estar ejecutándose en un cuadro de LINUX, ya que COM es una extensión basada en Windows.
Prueba este script y asegúrate.
if (function_exists(''com_create_guid'') === true)
{
echo "Yes";
$guid = com_create_guid();
echo $guid;
}
else{
echo "Nope !";
}
trabajando en generar un guid en un archivo php. Estoy usando com_create_guid()
. Funciona bien en localhost pero muestra el error a continuación en el servidor remoto.
Error grave: llamada a la función no definida com_create_guid () en la línea 6
mi código es (guid parte nly)
$guid = com_create_guid();
echo $guid;
algunas ideas
Para extender las respuestas parcialmente correctas de arriba:
tomado de http://php.net/manual/en/com.installation.php
"Desde PHP 5.4.5, COM y DOTNET ya no están integrados en el núcleo de php. Debe agregar soporte COM en php.ini"
extension = php_com_dotnet.dll
Puede crear GUIDs manualmente:
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;
}
}
Uso:
$GUID = getGUID();
echo $GUID;
Seguir:
Causa probable
Los sistemas Windows que no tengan cargado php_com_dotnet.dll (verifique su archivo php.ini), así como los sistemas que no sean Windows, no podrán usar com_create_guid () .
La solución
Reuní y modifiqué el siguiente código como la culminación de algunas de mis propias ideas y cambios (como el apoyo de Brace en todas partes), y numerosas sugerencias de múltiples fuentes para implementar una plataforma multiplataforma y una función de versión de PHP cruzada que admita la creación de UID reforzada y no reforzada. . La especificación de falso en la llamada de función devolverá un UID envuelto entre llaves ("estilo de Windows"). Especificar verdadero o nada devolverá un UID sin llaves.
Compatibilidad
PHP desde la versión 4.2 hacia arriba es compatible. Es independiente del sistema operativo y elegirá el "mejor" método basado en el sistema operativo, la versión de PHP y las bibliotecas / funciones de PHP disponibles (incluida la opción de respaldo si la biblioteca dotnet no está cargada en PHP Windows).
El código
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;
}
}
Uso
$newGUID = GUIDv4([false]); // false for braces, true or nothing for no braces
Más información
http://php.net/manual/en/function.com-create-guid.php