php5.5以后停止对2003的支持,但不乏高手改造,感谢lindasc.com分享

最新版本:7.0.9 / 5.6.24

更新日期:2016-7-28

系统要求:Windows XP/2003

修改说明:

因从头编译PHP太麻烦,故将部分Vista以上的API函数手动实现,然后为可执行文件的导入表打补丁。

目前实现的函数列表:

DLL名称 函数名称 nonxp.dll版本
iphlpapi.dll if_nametoindex 0.0.1.11
kernel32.dll GetFinalPathNameByHandleA 0.0.2.20
GetFinalPathNameByHandleW 0.0.2.20
GetTickCount64 0.0.1.11
InitializeConditionVariable 0.0.4.40
InitializeCriticalSectionEx 0.0.3.30
SleepConditionVariableCS 0.0.4.40
WakeAllConditionVariable 0.0.4.40
WakeConditionVariable 0.0.4.40
shell32.dll SHGetKnownFolderPath 0.0.3.30
ws2_32.dll WSASendMsg 0.0.1.11
inet_ntop 0.0.1.11
inet_pton 0.0.1.11

 

  使用说明:

PHP 7:系统必须装有IE8和VC14运行时库。

PHP 5.6:系统必须装有IE8和VC11运行时库。

  下载地址:

程序包

用户要求根据不同省份的访客自动弹出对应省份的客服。

这样方便客服跟客户的沟通。

下面代码简单修改就可以使用

<?php
function getIpAddress(){
$ipContent = file_get_contents(“http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js”);
$jsonData = explode(“=”,$ipContent);
$jsonAddress = substr($jsonData[1], 0, -1);
return $jsonAddress;
}
$ip_info=json_decode(getIpAddress());

$ip_info->province;

?>
<script type=”text/javascript” language=”javascript”>
var city='<?php echo $ip_info->province;?>’; //根据IP地址所有城市跳转到指定页面

if(city.indexOf(“山东”)>=0){
window.location.href=”http://shanghai.demo.com/”; }
if(city.indexOf(“广东”)>=0){
window.location.href=”http://shanghai.demo.com/”; }
if(city.indexOf(“上海”)>=0){
window.location.href=”http://shanghai.demo.com/”; }
</script>

然后呢

我直接弹出QQ客服

<?php
function getIpAddress(){
$ipContent = file_get_contents(“http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js”);
$jsonData = explode(“=”,$ipContent);
$jsonAddress = substr($jsonData[1], 0, -1);
return $jsonAddress;
}
$ip_info=json_decode(getIpAddress());

$ip_info->province;

if ($ip_info->province==”上海”)
{
echo “<a title=\”在线咨询\” href=\”http://wpa.qq.com/msgrd?v=3&uin=998888&site=qq&menu=yes\” target=\”_parent\”> “;}

else {
echo “<a title=\”在线咨询\” href=\”http://wpa.qq.com/msgrd?v=3&uin=9999&site=qq&menu=yes\” target=\”_parent\”> “; }
?>

,

用户原来使用的空间服务器很慢,想转到我这里来,让我帮忙转移数据,phpmyadmin都跑不动。

只好想个别的办法,单独来个备份的功能吧。

直接单文件。

<?php
header ( “content-Type: text/html; charset=utf-8″ );
//备份数据库
$host=”localhost”;
$user=”root”;//数据库账号
$password=”mimaabcd”;//数据库密码
$dbname=”ats”;//数据库名称
//这里的账号、密码、名称都是从页面传过来的
if(!mysql_connect($host,$user,$password)) //连接mysql数据库
{
echo ‘数据库连接失败,请核对后再试’;
exit;
}
if(!mysql_select_db($dbname)) //是否存在该数据库
{
echo ‘不存在数据库:’.$dbname.’,请核对后再试’;
exit;
}
mysql_query(“set names ‘utf8′”);
$mysql= “set charset utf8;\r\n”;
$q1=mysql_query(“show tables”);
while($t=mysql_fetch_array($q1)){
$table=$t[0];
$q2=mysql_query(“show create table `$table`”);
$sql=mysql_fetch_array($q2);
$mysql.=$sql[‘Create Table’].”;\r\n”;
$q3=mysql_query(“select * from `$table`”);
while($data=mysql_fetch_assoc($q3)){
$keys=array_keys($data);
$keys=array_map(‘addslashes’,$keys);
$keys=join(‘`,`’,$keys);
$keys=”`”.$keys.”`”;
$vals=array_values($data);
$vals=array_map(‘addslashes’,$vals);
$vals=join(“‘,'”,$vals);
$vals=”‘”.$vals.”‘”;
$mysql.=”insert into `$table`($keys) values($vals);\r\n”;
}
}
$filename=”data/”.$dbname.date(‘Ymjgi’).”.sql”; //存放路径,默认存放到项目最外层
$fp = fopen($filename,’w’);
fputs($fp,$mysql);
fclose($fp);
echo “数据备份成功”;
?>

 

顺便再来个还原的
二、还原

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
$filename = "test20101216923.sql";
$host="localhost"; //主机名
$user="root"; //MYSQL用户名
$password="123456"; //密码
$dbname="test"; //在此指定您要恢复的数据库名,不存在则必须先创建,请自已修改数据库名
mysql_connect($host,$user,$password);
mysql_select_db($dbname);
$mysql_file="data/".$filename; //指定要恢复的MySQL备份文件路径,请自已修改此路径
restore($mysql_file); //执行MySQL恢复命令
function restore($fname)
 {
 if (file_exists($fname)) {
  $sql_value="";
  $cg=0;
  $sb=0;
  $sqls=file($fname);
  foreach($sqls as $sql)
  {
  $sql_value.=$sql;
  }
  $a=explode(";\r\n", $sql_value); //根据";\r\n"条件对数据库中分条执行
  $total=count($a)-1;
  mysql_query("set names 'utf8'");
  for ($i=0;$i<$total;$i++)
  {
  mysql_query("set names 'utf8'");
  //执行命令
  if(mysql_query($a[$i]))
  {
   $cg+=1;
  }
  else
  {
   $sb+=1;
   $sb_command[$sb]=$a[$i];
  }
  }
  echo "操作完毕,共处理 $total 条命令,成功 $cg 条,失败 $sb 条";
  //显示错误信息
  if ($sb>0)
  {
  echo "<hr><br><br>失败命令如下:<br>";
  for ($ii=1;$ii<=$sb;$ii++)
  {
   echo "<p><b>第 ".$ii." 条命令(内容如下):</b><br>".$sb_command[$ii]."</p><br>";
  }
  }  //-----------------------------------------------------------
 }else{
  echo "MySQL备份文件不存在,请检查文件路径是否正确!";
 }
 }
?>

php缓存设置的目录是windows/temp,php缓存爆了,几个G,直接把C盘占满了,远程登录进去,提示各种错误,然后自动新增一个用户出来。
Documents and Settings下有Administrator文件和Administrator.PC两个文件夹,就是Administrator.user,或者Administrator.PC名 这样的。
而Administrator就保留着原来的桌面信息。
原来的桌面变成了Administrator.XXXX中的图标文件,我们需要做的是Administrator里面的原有文件。
步骤是:
1.到C:/Documents and Settings/文件夹下,右键Administrator文件夹->属性->安全->给管理员和管理员组(身份)勾上”完全控制”权限。
2.打开注册表. HK_LM/software/microsoft/windowsNT/currentVersion/profilelist/下面搜一下,一般在最后一个目录下有一项”profileImagePath”,双击它,然后把最后的“.机器名” 删掉。
3最后重启。

,

因为php的dos漏洞,不得不升级php,

搞了好多版本都不支持ioncube_loaders,一直以为kangle限制了,其实是版本没对应上

都是来自第三方的 整理一下。

kangle自带的php5.2.17应该是线程安全版,

对应的补丁版本用这个 http://www.upupw.net/Expand/n104.html

然后这个是vc6编译的ioncube_loaders就要用 VC6的版本

http://downloads3.ioncube.com/loader_downloads/ioncube_loaders_win_vc6_x86.zip

这个对应起来才能加载ioncube_loaders。

问题就是php编译有 VC6 ,VC9,VC11的区别.

同样php5.3.29, ioncube_loaders版本对应不上也加载不了,http://www.ioncube.com/loaders.php 从这里找php编译时对应的的版本.对应vc9或者vc11,然后还有ts和nts。

其实我也不懂为什么php5.2.17用的ts版本,php5.3.29却用的nts版。

, ,

php-5.2.17-upupw-nts-Win32-VC6-x86根据php-5.2.17-src.zip官方源码编译而成。

下载地址:http://pan.baidu.com/s/1i3GNOuL

  • 1、参照php-5.4.41-src.zip的源码修复了远程攻击者通过发送恶意构造的multipart/form-data请求,导致服务器CPU资源被耗尽,从而远程DOS服务器的漏洞。
  • 2、修复通过调用Hash冲突实现各种语言的拒绝服务攻击漏洞,此漏洞比较久远了从php官方放弃更新php5.2后就一直存在,linux上有修复补丁,此版特别针对windows。
  • 3、OpenSSL由OpenSSL 0.9.8q升级到了OpenSSL 0.9.8zf,修复旧版本存在的漏洞。

php-5.2.17-upupw-nts-Win32-VC6-x86.zip为Non Thread Safe(非线程安全版本)。

使用教程:

1、压缩的形式备份现有的php5.2.17程序目录。

2、解压php-5.2.17-upupw-nts-Win32-VC6-x86.zip全部覆盖现在的php5.2.17文件,不会影响php.ini配置文件请放心使用。

适用系统:

Windows Server 2003/2008/2012 ; XP/Vista/Win7/Win8.1 ; 32/64位通用。

此修复版和PHP官方的编译包结构是一样的,可以适用任何php5.2.17的nts vc6版本。

php的这个漏洞影响的人太多了,我服务器上几百个站,不得不升级,一直也没找到php5.2.17的,因为很多老的企业站还是老版本的php。因为有人在尝试攻击我的服务器,升级php5.6.9问题太对,还是保守的升级到5.3了。很多函数不兼容,手工一个一个的修改用户的文件,尽量减少错误。这个php5.3.29还不错,感谢simapple提供。

修改 CVE-ID2015-4024 ddos 问题,并编译

注意:由于时间仓促,本版本 未编译 Oracle的扩展

需要的同学可以下载 http://7xj87m.com1.z0.glb.clouddn.com/php5.3.29-nts-patch-simapple.zip(link is external)

有任何问题 请及时反馈 以便修复

列一下我要安装的所有东西:

mysql,php,apache,gd2,jpegsrc,freetype,libpng,zlib

安装顺序

1,apache:
官网有下。首先要看你的机子是否以前有了httpd了,有的话我们可以用,也可以不用,我是不用的,不用的话就要删除。

chkconfig | grep httpd

看看有没有,有的话就要删除。

Read the rest of this entry

, ,

网上搜到的都是 复制 libeay32.dll 和 ssleay32.dll 到system32下,
不管这些复制什么文件到 system32下,那些都是路径的问题。
复制了一堆文件都不起作用。
调试了2天,重启了无数遍iis,都没有加载成功。phpinfo里就是见不到curl。
用 php -v 命令 就提示 无法加载zlib.dll,然后是 找不到php_curl.dll.

我已经在环境变量里加了php的目录,不需要复制这些。
后来发现有很少的几个人报告5.2.14这个问题,在csdn上发现有人在php.net 报告了bug,官方已经修复。
只是php.net官方默认下载的都是2010.7.21的文件包,里面是有bug的curl.dll。
这个下载地址http://windows.php.net/download/ 里面是7.28的文件包,里面已经修复curl的bug.

熬了2天竟然是这个bug在作怪…

首先将IIS由64位模式修改为32位模式,只要一个命令即可:

cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1

恢复为64位模式的命令:

cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 0

PHP的安装与32位模式下是一样的。

IIS的ASP.NET需要重新注册一下才能用

32位:%SYSTEMROOT%\Microsoft.NET\Framework\v2.0.40607\aspnet_regiis.exe -i
64位:%SYSTEMROOT%\Microsoft.NET\Framework64\v2.0.40607\aspnet_regiis.exe -i