1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
private void BtnOpenUrl_Click(object sender, EventArgs e) { if (txtUrl.Text != "") { MywebBrowser.Url = new Uri(txtUrl.Text); } } private void BtnGetCookie_Click(object sender, EventArgs e) { CookieContainer myCookieContainer = new CookieContainer(); if (MywebBrowser.Document.Cookie != null) { string cookieStr = MywebBrowser.Document.Cookie; string[] cookstr = cookieStr.Split(';'); foreach (string str in cookstr) { string[] cookieNameValue = str.Split('='); Cookie ck = new Cookie(cookieNameValue[0].Trim().ToString(), cookieNameValue[1].Trim().ToString()); ck.Domain = "www.google.com"; myCookieContainer.Add(ck); } } } |
from:https://www.cnblogs.com/zhangzhu/p/3408317.html
View Details有时候我们在编写C#程序时需要某个线程睡眠一段时间,一般情况下,我们首先会想到用Thread.Sleep()方法,但是有时候用这个方法的时候会导致程序出现无响应的状况,那有没有其他办法来替代这个方法呢?答案是肯定的,下面亦是美网络就给大家介绍一下Thread.CurrentThread.Join()方法。 首先我们来看一下msdn帮助文档是如何介绍的: Thread.Sleep(); //将当前线程挂起指定的时间。 Thread.CurrentThread.Join(); //在继续执行标准的 COM 和 SendMessage 消息泵处理期间,阻塞调用线程,直到某个线程终止为止。 如果仅仅从字面上理解的话,Thread.Sleep();只是将线程挂起,即使当前线程没终止,还可以继续被调用。而Thread.CurrentThread.Join()方法不仅阻塞调用线程,并且还必须等到该线程终止。 这样的话,使用Thread.Sleep();有时就会导致程序出现无响应的情况,而使用Thread.CurrentThread.Join()程序将不会出现无响应,但是其他操作需要等待当前线程终止才会继续。 PS:要使用Thread类,需调用using System.Threading;命名空间。 from:http://www.yishimei.cn/network/390.html
View DetailsSystem.Net.WebRequest类,是通过HTTP协议与Web服务器进行交互的实现。 开发工具:VS2012,控制台应用程序 以下通过实例代码进行讲解,先不使用代理进行GET和POST调用;然后通过指定代理、本地IE代理进行GET和POST调用,循序渐进的学习。 GET和POST调用实现类: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 […]
View DetailsThread (ParameterizedThreadStart) 初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托。 Thread (ThreadStart) 初始化 Thread 类的新实例。 由 .NET Compact Framework 支持。 Thread (ParameterizedThreadStart, Int32) 初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托,并指定线程的最大堆栈大小。 Thread (ThreadStart, Int32) 初始化 Thread 类的新实例,指定线程的最大堆栈大小。 由 .NET Compact Framework 支持。 我们如果定义不带参数的线程,可以用ThreadStart,带一个参数的用ParameterizedThreadStart。带多个参数的用另外的方法,下面逐一讲述。 一、不带参数的 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 using System; using System.Collections.Generic; using System.Text; using System.Threading; namespace AAAAAA { class AAA { public static void Main() { Thread t = new Thread(new ThreadStart(A)); t.Start(); Console.Read(); } private static void A() { Console.WriteLine("Method A!"); } } } 结果显示Method A! 二、带一个参数的 由于ParameterizedThreadStart要求参数类型必须为object,所以定义的方法B形参类型必须为object。 1 […]
View Details在阅读本文前,大家要有一个概念,在实现正常的TCP/IP 双方通信情况下,是无法伪造来源 IP 的,也就是说,在 TCP/IP 协议中,可以伪造数据包来源 IP ,但这会让发送出去的数据包有去无回,无法实现正常的通信。这就像我们给对方写信时,如果写出错误的发信人地址,而收信人按信封上的发信人地址回信时,原发信人是无法收到回信的。 一些DDoS 攻击,如 SYN flood, 就是利用了 TCP/ip 的此缺陷而实现攻击的。《计算机网络》教材一书上,对这种行为定义为“发射出去就不管”。 因此,本文标题中的伪造来源IP 是带引号的。并非是所有 HTTP 应用程序中存在此漏洞。 那么在HTTP 中, " 伪造来源 IP", 又是如何造成的?如何防御之? 在理解这个原理之前,读者有必要对HTTP 协议有所了解。 HTTP 是一个应用层协议,基于请求 / 响应模型。客户端(往往是浏览器)请求与服务器端响应一一对应。 请求信息由请求头和请求正文构成(在GET 请求时,可视请求正文为空)。请求头类似我们写信时信封上的基本信息,对于描述本次请求的一些双方约定。而请求正文就类似于信件的正文。服务器的响应格式,也是类似的,由响应头信息和响应正文构成。 为了解这个原理,可使用Firefox Firebug, 或 IE 浏览器插件 HTTPwatch 来跟踪 HTTP 请求 / 响应数据。 本文中,以HTTPwatch 为例说明之。安装 httpwatch 并重启 IE 浏览器后, IE 的工具栏上出现其图标,点击并运行 Httpwatch, 就会在浏览器下方显示出 HTTPWatch 的主界面。 点击左下角红色的“Record ”按钮,并在地址栏输入 www.baidu.com, 等页面打开后,选中一个请求,并在下方的 tab 按钮中选择“ Stream ”,如图: 左边即是请求数据,右边即是服务器响应数据。左边的请求头均以回车换行结束,即“\r\n ” , 最后是一个空行(内容为 \r\n ) , 表示请求 header 结束。而请求 header 中除第一行外,其它行均由 header 名称, header 值组成,如 Accept-Encoding: gzip, deflate , header 名称与值之间有冒号相隔,之间的空格是可有可无的。 那么,在HTTP 应用程序中,如何取得指定的请求 header 信息呢?这里使用 PHP 语言为例说明。对所有客户端请求 header, PHP 程序中取得其值的方式如下: $_SERVER['HTTP_ HEADER_NAME '] HEADER_NAME应该以换成对应的 header 名称,此项的规律是:全大写,连接线变成下划线。比如要取得客户端的User-Agent 请求头,则使用 $_SERVER['HTTP_USER_AGENT'], 掌握这个规律,即可达到举一反三的效果。如要取得 COOKIE 信息,则使用 $_SERVER['HTTP_COOKIE'] 即可。也就是说, $_SERVER 数组中,以 HTTP 开头的项均属于客户端发出的信息。 回归到HTTP 应用程序层,来源 IP 的重要性不言而语,例如表单提交限制,频率等等均需要客户端 IP 信息。使用流行的 Discuz X2.5 的文件 source/class/discuz/discuz_application.php 中的代码片断: private function _get_client_ip() { $ip = $_SERVER['REMOTE_ADDR']; if (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP'])) { $ip = $_SERVER['HTTP_CLIENT_IP']; 如以下的JSP代码片段: public String getIpAddr(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for"); if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); } return ip; } 以上代码片段即是获取客户端IP ,这段程序会尝试检查 HTTP_CLIENT_IP, HTTP_X_FORWARDED_FOR, 根据之前的原理说明,以 HTTP_ 开头的 header, 均属于客户端发送的内容。那么,如果客户端伪造 Client-Ip, X-Forward-For ,不就可以欺骗此程序,达到“伪造 IP ”之目的? 那么如何伪造这项值?如果你会写程序,并了解HTTP 协议,直接伪造请求 header 即可。或者使用 Firefox 的Moify Headers 插件即可。 按图示顺序号输入或点击相应按钮。Start 按钮这里变为红色 Stop ,说明设置成功。 这时,如果我们使用Firefox 访问其它网站,网站服务器就针接收到我们伪造的 X-Forward-For, 值为 1.1.1.1 。 严格意义上讲,这并不是程序中的漏洞。Discuz 为了保持较好的环境兼容性 ( 包含有反向代理的 web 服务器环境,如 nginx 作为 php fastcgi 的前端代理 ) ,如此处理是可以理解的。那么如何处理,才能杜绝这个问题呢? 服务器重新配置X-Forward-For 为正确的值。 如对典型的nginx + php fastcgi 环境( nginx 与 php fastcgi 是否位于同一机器,并不妨碍此问题的产生) , nginx和 php fastcig 进程直接通信: 切记,$_SERVER['REMOTE_ADDR'] 是由 nginx 传递给 php 的参数,就代表了与当前 nginx 直接通信的客户端的 IP (是不能伪造的)。 再比如,存在中间层代理服务器的环境: 这种情况下,后端的HTTP 文件服务器上获取取的 REMOTE_ADDR 永远是前端的 squid/varnish cache 服务器的通信 IP 。 服务器集群之间的通信,是可以信任的。我们要做的就是在离用户最近的前端代理上,强制设定X-Forward-For 的值,后端所有机器不作任何设置,直接信任并使用前端机器传递过来的 X-Forward-For 值即可。 即在最前端的Nginx 上设置: location ~ ^/static { proxy_pass ….; proxy_set_header X-Forward-For $remote_addr ; […]
View Details有人会说:IP验证是在TCP层完成的,不是HTTP层完成的,如果伪造IP的话可能连TCP的三次握手都完不成。我这里说的不是完全意义的伪造。如果你使用透明代理上网,那么在透明代理发送给服务器端的HTTP请求中会包含x-forward-for信息。例如:X-Forwarded-For: 162.150.10.16 那么我们只要在发给服务器端的http请求中加入X-Forwarded-For: 162.150.10.16信息即可。 例如下边一个请求: GET http://www.ahjinzhai.gov.cn/sdyxnx/vote.php?id=1 HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */* Referer: http://www.ahjinzhai.gov.cn/sdyxnx/ Accept-Language: zh-cn Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt; TencentTraveler ) Host: www.ahjinzhai.gov.cn Cookie: PHPSESSID=1847fc15020bc16b47ce250f457daab4 Cache-Control: no-cache X-Forwarded-For: 162.150.10.16 Pragma: no-cache from:https://www.cnblogs.com/sanler/p/7248952.html
View Details第一步、配置.env文件(同一服务器上多个数据库) DB_CONNECTION=pgsql DB_HOST=IP(例如:127.0.0.1) DB_PORT=端口号(例如:5432) DB_DATABASE=连接的第一个数据库名(例如:user) DB_USERNAME=账号(例如:root) DB_PASSWORD=密码(例如:root) DB_DATABASE2=连接的第二个数据库名(例如:user2) DB_DATABASE3=连接的第三个数据库名(例如:user3) 第一步、配置.env文件(多个服务器上的数据库) 第二部分把不相同的改改就行了,注意区分 第二部、配置config/database.php(上面两个第一步的配置是差不多的,注意区分好就行了) //这个是默认的 'pgsql' => [ 'driver' => 'pgsql', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '5432'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', "), 'charset' => 'utf8', 'prefix' => ", 'schema' => 'public', 'sslmode' => 'prefer', ], //根据需求要连几个数据库就重复写下面的配置几遍,注意这里面’database’要跟 .env 里标红的相对应 'pgsql2' => [ 'driver' => 'pgsql', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '5432'), 'database' => env('DB_DATABASE2', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', "), 'charset' => 'utf8', 'prefix' => ", 'schema' […]
View Details在centos直接使用yum install 安装php的话版本比较低,如果需要高版本的话,请看如下: 1.使用Remi 安装源 Remi repository 是包含最新版本 PHP 和 MySQL 包的 Linux 源,由 Remi 提供维护。有这个源之后,使用 YUM 安装或更新 PHP、MySQL、phpMyAdmin 等服务器相关程序的时候就非常方便了。Remi 也提供了自动安装源的 rpm 包,安装和使用都很简单。 官网:http://rpms.famillecollet.com/ (1)安装Remi 源 方法1:安装最新的 Remi 源自动安装文件
1 2 3 4 |
<span class="hljs-preprocessor"># CentOS 6 / RHEL 6</span> yum install http:<span class="hljs-comment">//rpms.famillecollet.com/enterprise/remi-release-6.rpm</span> <span class="hljs-preprocessor"># CentOS 7 / RHEL 7</span> yum install http:<span class="hljs-comment">//rpms.famillecollet.com/enterprise/remi-release-7.rpm</span> |
方法2:逐步安装Epel源和Remi源
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<span class="hljs-preprocessor">## Install Remi & Epel Repository on RHEL/CentOS 6.4-6.0 - 32 Bit ##</span> rpm -Uvh http://download<span class="hljs-preprocessor">.fedoraproject</span><span class="hljs-preprocessor">.org</span>/pub/epel/<span class="hljs-number">6</span>/i386/epel-release-<span class="hljs-number">6</span>-<span class="hljs-number">8.</span>noarch<span class="hljs-preprocessor">.rpm</span> rpm -Uvh http://rpms<span class="hljs-preprocessor">.famillecollet</span><span class="hljs-preprocessor">.com</span>/enterprise/remi-release-<span class="hljs-number">6.</span>rpm <span class="hljs-preprocessor">## Install Remi & Epel Repository on RHEL/CentOS 6.4-6.0 - 64 Bit ##</span> rpm -Uvh http://download<span class="hljs-preprocessor">.fedoraproject</span><span class="hljs-preprocessor">.org</span>/pub/epel/<span class="hljs-number">6</span>/x86_64/epel-release-<span class="hljs-number">6</span>-<span class="hljs-number">8.</span>noarch<span class="hljs-preprocessor">.rpm</span> rpm -Uvh http://rpms<span class="hljs-preprocessor">.famillecollet</span><span class="hljs-preprocessor">.com</span>/enterprise/remi-release-<span class="hljs-number">6.</span>rpm <span class="hljs-preprocessor">## Install Remi Repository on RHEL/CentOS 5.9-5.0 - 32 Bit ##</span> rpm -Uvh http://dl<span class="hljs-preprocessor">.fedoraproject</span><span class="hljs-preprocessor">.org</span>/pub/epel/<span class="hljs-number">5</span>/i386/epel-release-<span class="hljs-number">5</span>-<span class="hljs-number">4.</span>noarch<span class="hljs-preprocessor">.rpm</span> rpm -Uvh http://rpms<span class="hljs-preprocessor">.famillecollet</span><span class="hljs-preprocessor">.com</span>/enterprise/remi-release-<span class="hljs-number">5.</span>rpm <span class="hljs-preprocessor">## Install Remi Repository on RHEL/CentOS 5.9-5.0 - 64 Bit ##</span> rpm -Uvh http://dl<span class="hljs-preprocessor">.fedoraproject</span><span class="hljs-preprocessor">.org</span>/pub/epel/<span class="hljs-number">5</span>/x86_64/epel-release-<span class="hljs-number">5</span>-<span class="hljs-number">4.</span>noarch<span class="hljs-preprocessor">.rpm</span> rpm -Uvh http://rpms<span class="hljs-preprocessor">.famillecollet</span><span class="hljs-preprocessor">.com</span>/enterprise/remi-release-<span class="hljs-number">5.</span>rpm |
PS:现在安装 Remi 源的时候会自动安装Epel源作为依赖包,所以也可不单独安装Epel源。 (2)安装Apache,MySQL,PHP
1 2 |
<span class="hljs-preprocessor">## Installing on RHEL/CentOS 5-6 ##</span> yum --enablerepo=remi install httpd mysql mysql-<span class="hljs-keyword">server</span> php php-<span class="hljs-keyword">common</span> |
(3)安装完成后查看一下PHP版本为5.4.* 在centos直接使用yum install 安装php版本为5.3.* (4)还是不满意啊,想要更高版本的PHP。那么,请看下方。 2.安装PHP5.6.* (1)追加CentOS 6.5的epel及remi源。
1 2 |
<span class="hljs-array"># rpm </span>-Uvh http:<span class="hljs-comment">//ftp.iij.ad.jp/pub/linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm</span> <span class="hljs-array"># rpm </span>-Uvh http:<span class="hljs-comment">//rpms.famillecollet.com/enterprise/remi-release-6.rpm</span> |
以下是CentOS 7.0的源。
1 2 |
<span class="hljs-preprocessor"># yum install epel-release</span> <span class="hljs-preprocessor"># rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm</span> |
(2)安装PHP
1 |
<span class="hljs-comment">#</span> <span class="hljs-comment">yum</span> <span class="hljs-comment">install</span> <span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-comment">enablerepo=remi</span> <span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-comment">enablerepo=remi</span><span class="hljs-literal">-</span><span class="hljs-comment">php56</span> <span class="hljs-comment">php</span> <span class="hljs-comment">php</span><span class="hljs-literal">-</span><span class="hljs-comment">opcache</span> <span class="hljs-comment">php</span><span class="hljs-literal">-</span><span class="hljs-comment">devel</span> <span class="hljs-comment">php</span><span class="hljs-literal">-</span><span class="hljs-comment">mbstring</span> <span class="hljs-comment">php</span><span class="hljs-literal">-</span><span class="hljs-comment">mcrypt</span> <span class="hljs-comment">php</span><span class="hljs-literal">-</span><span class="hljs-comment">mysqlnd</span> <span class="hljs-comment">php</span><span class="hljs-literal">-</span><span class="hljs-comment">phpunit</span><span class="hljs-literal">-</span><span class="hljs-comment">PHPUnit</span> <span class="hljs-comment">php</span><span class="hljs-literal">-</span><span class="hljs-comment">pecl</span><span class="hljs-literal">-</span><span class="hljs-comment">xdebug</span> <span class="hljs-comment">php</span><span class="hljs-literal">-</span><span class="hljs-comment">pecl</span><span class="hljs-literal">-</span><span class="hljs-comment">xhprof</span> |
安装PHP组件
1 |
yum install <span class="hljs-subst">--</span>enablerepo<span class="hljs-subst">=</span>remi <span class="hljs-subst">--</span>enablerepo<span class="hljs-subst">=</span>remi<span class="hljs-attribute">-php56</span> php<span class="hljs-attribute">-mysql</span> php<span class="hljs-attribute">-gd</span> libjpeg<span class="hljs-subst">*</span> php<span class="hljs-attribute">-imap</span> php<span class="hljs-attribute">-ldap</span> php<span class="hljs-attribute">-odbc</span> php<span class="hljs-attribute">-pear</span> php<span class="hljs-attribute">-xml</span> php<span class="hljs-attribute">-xmlrpc</span> php<span class="hljs-attribute">-mbstring</span> php<span class="hljs-attribute">-mcrypt</span> php<span class="hljs-attribute">-bcmath</span> php<span class="hljs-attribute">-mhash</span> libmcrypt |
(3)查看PHP版本为5.6.* 3.一键安装LAMP (1)翻看网上的一键包安装LAMP脚本的时候,看到Teddysun同学的一个LAMP一键包,网址:https://github.com/teddysun/lamp (2)可以选择Apache + PHP + MySQL/MariaDB/Percona (3)支持安装在CentOS/Debian/Ubuntu发行版本中。 (4)附带其他模块或软件 PHP Module: OPcache ZendGuardLoader ionCube_Loader XCache Imagemagick GraphicsMagick Memcache Memcached Redis Mongo Swoole Other Software: Memcached phpMyAdmin Redis-Server (5)安装方法 CentOS
1 2 3 4 5 6 7 |
yum <span class="hljs-attribute">-y</span> install wget screen unzip wget <span class="hljs-subst">--</span>no<span class="hljs-attribute">-check</span><span class="hljs-attribute">-certificate</span> <span class="hljs-attribute">-O</span> lamp<span class="hljs-built_in">.</span>zip https:<span class="hljs-comment">//github.com/teddysun/lamp/archive/master.zip</span> unzip lamp<span class="hljs-built_in">.</span>zip cd lamp<span class="hljs-attribute">-master</span> chmod <span class="hljs-subst">+</span>x <span class="hljs-subst">*</span><span class="hljs-built_in">.</span>sh screen <span class="hljs-attribute">-S</span> lamp <span class="hljs-built_in">.</span>/lamp<span class="hljs-built_in">.</span>sh |
Debian/Ubuntu
1 2 3 4 5 6 7 |
apt<span class="hljs-attribute">-get</span> <span class="hljs-attribute">-y</span> install wget screen unzip wget <span class="hljs-subst">--</span>no<span class="hljs-attribute">-check</span><span class="hljs-attribute">-certificate</span> <span class="hljs-attribute">-O</span> lamp<span class="hljs-built_in">.</span>zip https:<span class="hljs-comment">//github.com/teddysun/lamp/archive/master.zip</span> unzip lamp<span class="hljs-built_in">.</span>zip cd lamp<span class="hljs-attribute">-master</span> chmod <span class="hljs-subst">+</span>x <span class="hljs-subst">*</span><span class="hljs-built_in">.</span>sh screen <span class="hljs-attribute">-S</span> lamp <span class="hljs-built_in">.</span>/lamp<span class="hljs-built_in">.</span>sh |
(6)然后可以根据提示依次选择要安装的httpd、MYSQL、PHP版本,设置完毕之后自动安装。版本情况如下: Apache-2.2 […]
View Details很多php开源系统都是基于Zend Optimizer的,所以我们需要先安装Zend Optimizer。 但在php5.3之后Zend Optimizer被Zend Guard Loader 取代了,所以我们就要安装Zend Guard Loader了。 zend官网,以下是安装 Zend Guard Loader的具体方法 安装前准备 1 2 uname -m #查看centos操作系统位数 php -v #查看PHP版本 在zend官网找到适合自己系统(32位或64位)的对应PHP版本的 Zend Guard Loader 下载并解压缩. 1 2 3 4 wget http://downloads.zend.com/guard/6.0.0/ZendGuardLoader-70429-PHP-5.4-linux-glibc23-x86_64.tar.gz tar -zxvf ZendGuardLoader-70429-PHP-5.4-linux-glibc23-x86_64.tar.gz cd ZendGuardLoader/ #进入解压后的目录 cat README.txt#查看 README 文档. 开始安装 复制对应PHP版本文件夹下的 ZendGuardLoader.so 到PHP安装目录(/etc/httpd/modules 目录或 /usr/lib/httpd/modules 目录, 这两个目录其实是同一个位置) 1 cp ZendGuardLoader.so /usr/lib/httpd/modules 编辑php配置文件.在 php.ini 文件末尾添加几行配置项. 1 2 3 4 5 vim /etc/php.ini zend_extension=/etc/httpd/modules/ZendGuardLoader.so zend_loader.enable=1 zend_loader.disable_licensing=0 zend_loader.obfuscation_level_support=3 检测配置文件是否配置正确 1 php -s 重启 Apache 或 Nginx 1 2 systemctl restart httpd 或 systemctl restart php-fpm from:https://www.cnblogs.com/Beyron/p/6189418.html
View Detailsioncube是业内优秀的php加密解密解决方案。和zend guard相比,ioncube具有如下优势: 1. 安全:zend guard的版本不是非常安全,网络上有破解使用zend,下面我们来看IonCube安装方法吧。 这两天安装whmcs的时候,出现了 requires the ionCube PHP Loader ioncube_loader_lin_5.4.so to be installed by the site administrator. 上面说的是没有安装ionCube,所以我们先来安装一下ionCube。 查看系统 uname -a 这里主要是查看一下系统是32位还是64位的,不然安装了也是没有用的。 下载ionCube 进入:http://www.ioncube.com/loaders.php ,根据你的系统是32位还是64位下载适当的软件包。 32位ionCube cd /usr/local wget http://downloads3.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz tar zxvf ioncube_loaders_lin_x86.tar.gz 64位ionCube cd /usr/local wget http://downloads3.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz tar zxvf ioncube_loaders_lin_x86-64.tar.gz 配置ionCube 修改php.ini 在文件尾部添加以下代码: [ionCube Loader] zend_extension="/usr/local/ioncube/ioncube_loader_lin_php的版本号.so" 列如 PHP5.1 [ionCube Loader] zend_extension="/usr/local/ioncube/ioncube_loader_lin_5.1.so" PHP5.2 [ionCube Loader] zend_extension="/usr/local/ioncube/ioncube_loader_lin_5.2.so" PHP5.3 [ionCube Loader] zend_extension="/usr/local/ioncube/ioncube_loader_lin_5.3.so" PHP5.4 [ionCube Loader] zend_extension="/usr/local/ioncube/ioncube_loader_lin_5.4.so" PHP5.5 [ionCube Loader] zend_extension="/usr/local/ioncube/ioncube_loader_lin_5.5.so" PHP5.6 [ionCube Loader] zend_extension="/usr/local/ioncube/ioncube_loader_lin_5.6.so" 这里需要注意的是:如果有安装Zend Optimizer,安装ionCube会和Zend Optimizer可能发生冲突,须将Zend Optimizer的代码放在ionCube的后面。 验证ionCube 现在我们需要重启Apache2/php5-fpm(nginx)完成载入模块 重启WEB服务器 service apache2 restart service php5-fpm restart 重启完毕后,可以使用phpinfo来验证。或者直接建立一个PHP文件,内容如下: […]
View Details