1:今天部署php项目,发布完项目后,发现访问项目时候,主页面验证码无法加载,网上搜集解决方案,主要如下
2:千篇一律,主要解决方案为,修改php.ini文件去掉注释如下:
2.1 extension=php_gd2.dll(去掉该代码前边的;号,打开该模块,改模块为php自动生成图片时候调用的一个动态库,如果没有改动态库,则无法正常运行)
2.2 修改如下模块还无法运行时候,注意查看php.ini中 (extension_dir路径,默认为C盘,注意修改为你php的路径,如果该文件错误则根本无法找到你的dll文件,这个里面加载的是你的dll的文件夹路径)
2.3以上还不行,将刚刚的php_gd2.dll 以及你的php.ini放到你的C盘 windows下
2.4 进行以上修改以后,访问你的主页面:localhost(该页面会加载出来你的php基本信息包括gd模块,搜索gd模块如果搜索到了,代表改模块已经成功加载)
3以上步骤解决不了,可能是你的bom 中UTF-8编码问题导致:将如下代码,放在你的php根目录下,命名为1.php 并且访问下localhost/1.php 访问一次,则验证码问题得到解决
/*清除rom*/
if(isset($_GET['dir'])){
$basedir=$_GET['dir'];
}else{
$basedir = '.';
}
$auto = 1;
checkdir($basedir);
function checkdir($basedir){
if($dh = opendir($basedir)){
while(($file = readdir($dh)) !== false){
if($file != '.' && $file != '..'){
if(!is_dir($basedir."/".$file)){
echo "filename: $basedir/$file ".checkBOM("$basedir/$file")."
";
}else{
$dirname = $basedir."/".$file;
checkdir($dirname);
}
}
}//end while
closedir($dh);
}//end if($dh
}//end function
function checkBOM($filename){
global $auto;
$contents = file_get_contents($filename);
$charset[1] = substr($contents, 0, 1);
$charset[2] = substr($contents, 1, 1);
$charset[3] = substr($contents, 2, 1);
if(ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191){
if($auto == 1){
$rest = substr($contents, 3);
rewrite ($filename, $rest);
return "BOM found, automatically removed.";
}else{
return ("BOM found.");
}
}
else return ("BOM Not Found.");
}//end function
function rewrite($filename, $data){
$filenum = fopen($filename, "w");
flock($filenum, LOCK_EX);
fwrite($filenum, $data);
fclose($filenum);
}
?>
阅读(1599) | 评论(0) | 转发(0) |