$_SERVER[‘SERVER_PORT’]关于php5.2一个bug

链接在这:phpbug

服务器环境:CentOs + php5.2.13
问题:项目里边$_SERVER[‘SERVER_PORT’]获取到的端口不对

我也遇到同种情况了,我的apache端口已经修改为85
在phpinfo里看到的,$_SERVER[‘SERVER_PORT’]是85,对的。
在项目里边获取到的,就是80。也正好项目里是用到了apache的url重写

我是为了获取当前url的路径

<?php
 
//折中办法
$protocol = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') ? 'https' : 'http';
$host = !empty($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME'] . ':' . $_SERVER['SERVER_PORT'];
$url = $protocol .'://'. $host . $_SERVER['REQUEST_URI'];

解决“没有找到OCI.dll,因此这个应用程序未能启动。重新安装应用程序可能会修复此问题”报错

Win下 php环境报错:没有找到OCI.dll,因此这个应用程序未能启动。重新安装应用程序可能会修复此问题
这个错误一般出现在php.ini 启用了“oci”扩展的时候出现
解决办法:
1、下载 http://download.oracle.com/otn/nt/instantclient/10204/instantclient-basic-win32-10.2.0.4.zip
2、找到其中的oci.dll 放到 C:\WINDOWS\system32\
3、重启apache

其实说白了,就是要安装oracle客户端,上oracle官网下载安装对应版本instanceclient,安装程序会把客户端bin目录写入环境变量“path”这一点是关键,重启电脑,再设置php oci扩展即可

使用位运算来实现PHP权限控制

原理: 将每个二进制位为一个权限标识位

增加权限使用 | (无论存在与否, 将对应的权限位置1)
删除权限使用 ^ 或 & ~ (无论存在与否, 将对应的权限位置0)
判断权限使用 & (使用与判断对应的权限位是否为1, 是, 返回非0; 不是, 返回0)

参考链接

http://xiaobin.net/archives/8/

http://www.lizhijin.com/view.php/PHP/140.html

http://topic.csdn.net/u/20090421/23/25ff3c5c-8bd1-4899-a05e-ecac2bad36e6.html (算法与前两则不同)

转自:http://www.zvv.cn/blog/show-106-1.html

自己的总结:
有提到过用mysql的set字段来实现系统权限控制,虽然mysql的set字段也是位运算,但用来实现权限控制,需要每次检验权限的时候查询数据库,不是很方便,且从程序通用性角度来看,不能把某个关键设计依赖于其他系统。over