有关在Windows下配置PHP Apache Optimizer失败的问题解决方案

 更新时间:2016年11月25日 16:15  点击:2232
昨晚在Windows XP Professional [带IIS]下安装了PHP 5.0.5和 Apache 2.0.54[监听端口8088].
今天在安装Discuz论坛时被要求安装Zend-Optimizer以支持加密过的PHP文件.
下载到Zend-Optimizer 2.5.7的Win32安装文件
在安装时,开始很顺利
Apache Root和php.ini选择路径分别为:
E:/Program Files/Apache Group/Apache2
E:/PHP5
可是到后来需要重启Apache的时候,重启失败.手动重启.提示安装成功.可是在phpinfo.php中察看时,发现Optimizer并没有和PHP关联上.有关Zend的提示信息为:
Zend Engine v2.0.5,Copyright(c) 1998-2004 Zend Technologies. 并没有Optimizer的信息.加密文件也无法正确执行.
开始以为是Apache重启的问题,反复试验后发现Apache正常.后来在网上搜索,也没有发现相关的解决方案.后来突然想到之前复制了一个Php.ini文件到了C:/Windows目录下,想是不是实际上使用的那个ini文件.
尝试重装Optimizer,ini文件路径选择C:/Windows.还是手动重启Apache.
安装结束察看phpinfo.php,Zend提示信息为
Zend Engine v2.0.5,Copyright (c) 1998-2004 Zend Technologies.
With Zend Extention Manager v1.0.6,Copyright(c) 2003-2004,by Zend Technologies
With Zend Optimizer v2.5.7,Copyright(C) 1998-2004,by Zend Technologies
成功安装Optimizer,执行Discuz加密文件正常!
总结:在安装Optimizer时,php.ini文件一定要选择在Windows目录下安装的实际使用的那个.其实在安装时它是提示C:/Windows的,不过自己没有注意,因此导致了安装的失败.


写了几个身份证方面的函数,个人感觉挺有用的,特别是在网络问卷调查时,对个人信息里的身份证进行验证很有用,但是应者寥寥,还是收在自己的blog里算了。
 

<?php
// 计算身份证校验码,根据国家标准GB 11643-1999
function idcard_verify_number($idcard_base){
 if (strlen($idcard_base) != 17){ return false; }
 // 加权因子
 $factor = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
 // 校验码对应值
 $verify_number_list = array(’1’, ’0’, ’X’, ’9’, ’8’, ’7’, ’6’, ’5’, ’4’, ’3’, ’2’);
 $checksum = 0;
 for ($i = 0; $i < strlen($idcard_base); $i ){
  $checksum = substr($idcard_base, $i, 1) * $factor[$i];
 }
 $mod = $checksum % 11;
 $verify_number = $verify_number_list[$mod];
 return $verify_number;
}
// 将15位身份证升级到18位
function idcard_15to18($idcard){
 if (strlen($idcard) != 15){
  return false;
 }else{
  // 如果身份证顺序码是996 997 998 999,这些是为百岁以上老人的特殊编码
  if (array_search(substr($idcard, 12, 3), array(’996’, ’997’, ’998’, ’999’)) !== false){
   $idcard = substr($idcard, 0, 6) . ’18’. substr($idcard, 6, 9);
  }else{
   $idcard = substr($idcard, 0, 6) . ’19’. substr($idcard, 6, 9);
  }
 }
 $idcard = $idcard . idcard_verify_number($idcard);
 return $idcard;
}
// 18位身份证校验码有效性检查
function idcard_checksum18($idcard){
 if (strlen($idcard) != 18){ return false; }
 $idcard_base = substr($idcard, 0, 17);
 if (idcard_verify_number($idcard_base) != strtoupper(substr($idcard, 17, 1))){
  return false;
 }else{
  return true;
 }
}
?>

  其中的$idcard_base是指身份证中的本位码,本位码是18位身份证里才有的,也就是18位身份证的前17位,最后一位称为校验码
  一般在使用的时候不用直接调用idcard_verify_number(),平时的应用大多是使用后两个函数,这些函数都没有关心身份证字符串的格式问题,在调用前自行进行格式检查。


片段3。创建新的篮子并向其中增加一条项目
<?php
// 将项目计数设为1
$ses_basket_items=1;
// 填充4个数组的第0个位置,使用从href链接传过来的值
// 链接是在'给你的页面增加链接’部分所讲的
$ses_basket_name[0]=$basket;
$ses_basket_amount[0]=1;
$ses_basket_price[0]=$price;
$ses_basket_id[0]=$id;
// 在session中注册新的篮子
session_register("ses_basket_items");
session_register("ses_basket_name");
session_register("ses_basket_amount");
session_register("ses_basket_price");
session_register("ses_basket_id");
?>
  这样将创建一个篮子,将所以的值填在数组第0个位置上,并利用session注册数组。一个篮子诞生了。
片段4。填充篮子
<?php
$basket_position_counter=0; //篮子中的位置
$double=0; //双重入口标志设为NO
if ($ses_basket_items>0){
// 检查是否篮子包含的项目中有双重入口
foreach ($ses_basket_name as $basket_item){
// 遍历数组所包含的名字,检查是否与从href所传来的相配匹
if ($basket_item==$basket){
// 如果在篮子中已经有了一个项目,将flag设为1
$double=1;
// 记住项目的位置,将进行更新
$basket_position=$basket_position_counter;
}
$basket_position_counter ; //增加篮子中的实际位置
}
}
// 更新篮子
if ($double==1){
// 如果项目在你的篮子中已经存在则更新在$basket_position处理的数量和位置
$oldamount=$ses_basket_amount[$basket_position];
$ses_basket_amount[$basket_position] ;
$amount=$ses_basket_amount[$basket_position];
$oldprice=$ses_basket_price[$basket_position];
//更新价格
$newprice=($oldprice/$oldamount)*$amount;
$ses_basket_price[$basket_position]=$newprice;
}else{
// 如果它不在你的篮子中,则在数组末尾增加新的项目
$ses_basket_name[]=$basket;
$ses_basket_amount[]=1;
$ses_basket_price[]=$price;
$ses_basket_id[]=$id;
$ses_basket_items ;
需要gd库支持.
Image 图像函数
参见http://php.liukang.com/manual/zh/ref.image.php
<?php
// BY PHP 国度 www.phphot.be
//关闭报错
error_reporting(0);
//图片宽度
$x_size=60;
//图片高度
$y_size=20;
//生成4个随机字符
$nmsg=num_rand(4);
//支持安全通连接吗?
$S=$_SERVER['SERVER_PORT']=='443' ? 1:0;
//使用cookie记录随机码
//expire=0 cookie将会在会话结束后(一般是浏览器关闭)失效。
 
setCookie('ck_num',md5($nmsg),0,'/','',$S);
//创建宽:60*20的图片(画布)
$aimg = imagecreate($x_size,$y_size);
//设置图片背景色
$back = imagecolorallocate($aimg, 255, 255, 255);
//设置字体颜色
$border = imagecolorallocate($aimg, 0, 0, 0);
//从0,0点填充59*19的白色矩形区域
imagefilledrectangle($aimg, 0, 0, $x_size - 1, $y_size - 1, $back);
//从0,0点绘制59*19的黑色矩形边框
imagerectangle($aimg, 0, 0, $x_size - 1, $y_size - 1, $border);
for ($i=0;$i<strlen($nmsg);$i++){
     //在图片上写字
     imageString($aimg,5,$i*$x_size/4+3,2, $nmsg[$i],$border);
}
header("Content-type: image/png");
imagepng($aimg);
imagedestroy($aimg);exit;
function num_rand($lenth){
     // 播下一个随机数发生器种子
     //php自4.2.0起,,此参数变为可选项,当该项为空时,会被设为随时数
     mt_srand((double)microtime() * 1000000);
     //产生有4个随机数字的字符串
     for($i=0;$i<$lenth;$i++){
        $randval.= mt_rand(0,9);
     }
     //对含有4个数字的字符串使用md5加密,长度是32位的
     //从3长度为32的字符中,自最小数起或最大数32-$lenth起,取长度为$lenth的字符串
     $randval=substr(md5($randval),mt_rand(0,32-$lenth),$lenth);
     return $randval;
}
?> 


生成6 ~ 16位的用户名若干个,主要是文本操作,同事前提是要有一个字符串包。主要包含三个程序。
程序一:负责从字典中随机提取数据,写入一个新文件。(1.php)
<?php
/* 从字典文件中提取随机值 */
$file1 = "./Words.dic";
$file2 = "./common_pass_mini.dic";
$file3 = "./Sys_Month_Date.Dic";
$rfile = "./5.dic";
$n = 2000;
//提取字典
$basef = file($file1);
$extf = file($file2);
$extf2 = file($file3);
$bf_sum = (count($basef)-1);
$ef_sum = (count($extf)-1);
$ef2_sum =(count($extf2)-1);
//获取随机用户名
for ($i=0; $i<$n; $i++)
{
 $bn = crand(0, $bf_sum);
 $en = crand(0, $ef_sum);
 $en2 = crand(0, $ef2_sum);
 $name = $basef[$bn]."_".$extf[$en];
 $name = str_replace(" ", "", $name);
 $all_name[] = $name;
}
//写入文件
$result = implode(" ", $all_name);
$fp = fopen($rfile, "a+") or die('Open $rfile failed');
if (fwrite($fp, $result)) {
 echo 'Write user succeed!';
} else {
 echo 'Write user failed';
}
//生成随机数字函数
function crand($start, $end)
{
 return mt_rand($start, $end);
}
?>
程序二:负责把上面生成的数个文件的结果合并。(2.php)
<?php
/* 合并所有生成结果 111cn.net*/
$result_file = "./result.dic";
$fp = fopen($result_file, "a+") or die("Open $result_file failed");
//合并 1.dic ~ 5.dic
for ($i=1; $i<=5; $i++)
{
 $cur_file = file_get_contents($i.".dic");
 fwrite($fp, $cur_file);
}
//合并 10.dic ~ 11.dic
for ($i=10; $i<=11; $i++)
{
 $cur_file = file_get_contents($i.".dic");
 fwrite($fp, $cur_file);
}
fclose($fp);
echo 'Write Succeed';
?>
程序三:负责过滤重复值和不属于 6~16 之间的值并且生成最终结果(3.php)
<?php
/* 生成最终结果 */
$file = "./result.dic";
$target = "./target.dic";
[!--infotagslink--]

相关文章

  • 巧妙在IIS中配置PHP调试环境(一)

    Windows系统内置的Internet信息服务(IIS)对ASP具有良好的支持,因此在IIS中调试ASP网页是非常方便的。但有些朋友的网页采用PHP编程技术,默认情况下,IIS是不支持PHP的,手...2016-11-25
  • ZendOptimizer.MemoryBase@NETWORK SERVICE问题解决方法

    这篇文章主要介绍了Windows服务器下出现ZendOptimizer.MemoryBase@NETWORK SERVICE问题解决方法,需要的朋友可以参考下...2016-01-27
  • 有关在Windows下配置PHP Apache Optimizer失败的问题解决方案

    昨晚在Windows XP Professional [带IIS]下安装了PHP 5.0.5和 Apache 2.0.54[监听端口8088]. 今天在安装Discuz论坛时被要求安装Zend-Optimizer以支持加密过的PHP文件....2016-11-25
  • 聊聊pytorch中Optimizer与optimizer.step()的用法

    这篇文章主要介绍了pytorch中Optimizer与optimizer.step()的用法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-05-31
  • Windows Server 2008 r2 安装Zend Optimizer教程

    这篇文章主要为大家分享下在Windows Server 2008 R2下安装Zend Optimizer的方法,因为一些程序使用了zend加密,必须安装Zend Optimizer,这里简单介绍下,方便需要的朋友...2016-01-27
  • IIS PHP MySQL ZendOptimizer等安装配置

    一、软件预备: php(5.1.2):http://www.php.net mysql(5.0.19):http://www.mysql.com zend optimizer(2.6.2):http://www.zend.com phpmyadmin(2.8.0.2):http://www.phpmya...2016-11-25
  • 用ApacheServer配置PHP,CGI服务器

    现在有越来越多的个人主页站长需要了解如何如何在windows系统下配置自己的php,cgi服务器,以方便本地调试cgi和php的程序。   我们可以用Apache(windows版)来一次搞定:以下...2016-01-28
  • windowsXP中如何配置php环境

    下载PHP5: php教程.net/distributions/php-5.2.6-Win32.zip" target="_blank">http://cn2.php.net/distributions/php-5.2.6-Win32.zip 下载apache: http://dow...2016-11-25
  • Win2000下IIS中配置PHP具体方法

    PHP是一种领先于ASP的技术。与ASP相比,它具有速度快、稳定性高、跨平台、易学习等优点。ASP学习者使用的OS几乎都是Windows平台,上面无疑都装有IIS。PHP所需求的服务器...2016-11-25
  • PHP学习:关于Zend Optimizer

    Zend Optimizer(以下简称ZO)用优化代码的方法来提高PHP 4.0应用程序的执行速度。实现的原理是对那些在被最终执行之前由运行编译器(Run-Time Compiler)产生的代码进行...2016-11-25
  • WAMP环境下安装配置PHP Curl方法详解

    在php 中Curl模块是没有打开的,如果我们需要打开需要简单的配置一下,下面我来介绍在WAMP环境下安装配置PHP Curl方法,各位同学可参考。 1, 复制PHP目录下的libea...2016-11-25
  • 构建可配置PHP应用程序的正确方式

    本文举例说明了创建可配置 PHP 应用程序的几种方法。文中也探讨了应用程序中理想的配置点,并在应用程序过分可配置和过分封闭之间寻求一个平衡点。   假如计划让其...2016-11-25
  • windows+IIS 环境下以Fastcgi方式配置php 5.3.3的方法

    需要在IIS6.0下配置PHP,由于php 5.3.3已经不再支持isapi配置了,因此需采用fastcgi方式配置,下面分享一下我的配置过程。...2016-01-27
  • windows2003下配置php curl组件的文字教程

    在php中php curl组件默认情况下是不支持的,下面小编来给大家介绍在windows2003下配置php_curl组件的文字教程,希望此方法对大家所有帮助。 A) 支持php_curl组件 1....2016-11-25
  • 简单设置IIS配置PHP调试环境

      Windows系统内置的Internet 信息服务(IIS)对ASP具有良好的支持,因此在IIS中调试ASP网页是非常方便的。但有些朋友的网页采用PHP编程技术,默认情况下,IIS是不支持PHP的,...2016-11-25
  • 安装与配置PHP,让apache和php一起工作

    安装与配置PHP /software/php-3.0.14-win32.zip 安装于c:php3 配置:把c:php3php3.ini-inst文件copy为php3.ini并修改 设apache服务器的主目录 doc_root=C:apachehtdoc...2016-11-25
  • ZendOptimizer配置指南

    当前作者:王猛 (HeartIcy@163.com) 创建日期:2003年1月14日 修订版本:1.1 Zend Optimizer是由PHP核心引擎“Zend”创建者Zend技术公司所开的免费PHP优化软件。据Zend公司...2016-11-25
  • 巧妙在IIS中配置PHP调试环境(二)

    运行PHP软件包的安装程序,在弹出的欢迎窗口中单击“Next”按钮,接着在“许可协议”窗口中单击“I Agree”按钮,然后在安装类型(Installation Type)窗口中选择“标准(Stan...2016-11-25
  • windows下IIS配置PHP环境图文方法

    本文章来给各位同学介绍在windows系统中iis7配置php环境的几种方法,有需要了解的朋友可参考,这里我以PHP5.2.17和PHP5.3.5 为实例,iis7配置PHP5.3.5和PHP5.2.17方法。...2016-11-25
  • ZendOptimizer-3.3.9最新版的安装步骤

    本文章来给各位同学详细介绍ZendOptimizer-3.3.9最新版的安装步骤,这是一篇安装笔记有需要了解的朋友可参考此文章来操作。 ZendOptimizer-3.3.9-linux-glibc23-x8...2016-11-25