PHP 中是否有任何值对于每个系统都是唯一的


Is there any Value in PHP which is unique for each system

在PHP中,有没有办法获取运行它的系统唯一的值?

理想情况下,我希望它是一种随机字符串,在运行的系统上保持不变,但在其他系统上有所不同。

需要一个我不必存储在单独的文件/数据库中并且在每个脚本上都可以轻松获得的。

创建自己的随机值(例如使用 uniqid)并将其放入环境变量。对于用户,apache或nginx。或者只是在你的 php 文件中定义它。

是的

-

最终,你想要gethostname()

如果你这样做:

echo md5($_SERVER['SERVER_ADDR'].gethostname()); 

然后,您将拥有一个仅与该服务器有关的唯一字符串

但是,还有很多其他值将是独一无二的

尝试:

<?php 
print_r($_SERVER); 
?>

您应该找到几个与您正在寻找的值相似的值。

如:

 [SERVER_SOFTWARE] => nginx/1.4.6
 [SERVER_ADDR] => 123.456.789.909

然后,还有一些预定义的常量可以保存您想要的内容 -

<?php
print_r(get_defined_constants()); 

?> 

其中有这样的事情:

[PHP_VERSION] => 5.5.9-1ubuntu4.5
[PHP_MAJOR_VERSION] => 5
[PHP_MINOR_VERSION] => 5
[PHP_RELEASE_VERSION] => 9
[PHP_EXTRA_VERSION] => -1ubuntu4.5
[PHP_VERSION_ID] => 50509

虽然这些值在运行相同软件堆栈的服务器上是相同的,但这些值通常不太可能完全匹配......但是,唯一 ID 的最佳选择是 IP 地址 + 主机名 -

您可以生成uniqid()附加主机名,然后使用类似 md5sha-256 的内容对其进行哈希处理