我使用的是5.6.11版本的php 刚开始以为编译参数加了--with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd,就可以不能安装mysql了。 但是使用了mysq_connect()函数后发现php无法解析,在apache的日志当中出现下面这个提示,刚开始想不通。 PHP Fatal error: Call to undefined function mysql_connect() 因为原先的mysql.api已经在php5.5开始被移除,而之后的php 自带的mysqli只支持部分部分函数。 具体可以参考http://cn2.php.net/manual/zh/set.mysqlinfo.php 如果真的不想安装mysql,用以替代本函数的有: mysqli_connect() mysqli_connect("localhost","my_user","my_password","my_db"); http://cn2.php.net/manual/zh/function.mysql-connect.php —————————————————————— 首先纠正一个问题, 5.x开始,PHP连接MYSQL无论使用哪种方式都是使用的mysqlnd驱动(当然是在你安装好的时候)。包括mysql_*、PDO_MYSQL、MYSQLi 在编译安装PHP的时候,需要指定开启以下扩展 --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd 而不再是 --with-mysqli=/usr/local/mysql PHP7 正式移除了 mysql 扩展 mysqlnd和mysql mysqli pdo_mysql关系打比方说 mysqlnd是金属,而mysql mysqli pdo_mysql只是金属制品而已 使用PDO连接mysql
1 2 3 4 5 6 7 8 9 |
$pdo = new PDO('mysql:host=localhost;dbname=database_name;port=3306','用户名','密码'); $pdo->exec('set names utf8'); $stmt = $pdo->prepare("select * from table where id =:id"); $stmt->bindValue(':id',1,PDO::PARAM_INT); $stmt->execute(); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); $rows = $pdo->query("select * from table where id = 1")->fetchAll(PDO::FETCH_ASSOC); |
from:https://www.cnblogs.com/wajika/p/6627140.html
View Details一.类常量:在类中始终保持不变的值定义为常量 类的常量不能使用访问限制修饰符,他是 public 的,可继承,可以被子类重写,访问类的常量必须使用双冒号 :: ,可以使用类名或类的实例来访问,因为是常量,所以名称不能使用表示变量的符号 $. 可以把在类中始终保持不变的值定义为常量。在定义和使用常量的时候不需要使用 $ 符号。 常量的值必须是一个定值,不能是变量,类属性,数学运算的结果或函数调用。 接口(interface)中也可以定义常量。更多示例见文档中的接口部分。 自 PHP 5.3.0 起,可以用一个变量来动态调用类。但该变量的值不能为关键字(如 self,parent 或 static)。 语法 : const constant= '常量'; ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 class Myclass{ const constant = '常量'; //类内部调用 public function test(){ echo self::constant.'<br>'; } } Myclass::test(); //类外部访问 echo Myclass::constant.'<br>'; //方法一 $obj = new Myclass(); //方法二 echo $obj::constant.'<br>'; 二.静态属性 : 是一个变量,可以常量的语法访问,就是 :: ,可以没有实例化也能访问 语法 :public static $my_static = '类似常量'; ? 1 2 3 4 5 6 7 8 9 10 11 […]
View Details方法一 修改php.ini
1 2 3 4 5 6 |
;显示错误信息 display_errors = On ;显示php开始错误信息 display_startup_errors = On ;日志记录错误信息 log_errors = On |
方法二 需要调试的php文件首行中加入
1 2 3 4 |
ini_set('display_errors',1); //错误信息 ini_set('display_startup_errors',1); //php启动错误信息 error_reporting(-1); //打印出所有的 错误信息 ini_set('error_log', dirname(__FILE__) . '/error_log.txt'); //将出错信息输出到一个文本文件 |
from:https://blog.csdn.net/whatday/article/details/50833934
View Details最近做了一个支付宝支付的应用,现在还在开发过程中,今天早上起床之后先调试了一下项目,模拟支付了一笔(¥9999.00) 2333支付宝的沙箱环境啦,屌丝程序猿哪来这么多钱…… 打开Navicat查看数据库的时候,意外发现created_at字段的时间不大对啊,少了8小时,显示凌晨4点创建的支付订单。(没错,我睡到12点才起来的) 然后,首先意识到了PHP的时区配置不对,立即打开Wamp环境查看了一下,timezone是。。。Asia/Shanghai。额,这就很不科学了啊 接下来很自然就想到了Laravel的问题,打开Laravel的/app/config/app.php配置文件,发现里面果然有这么一行:
1 2 3 |
<span class="ot">[</span> <span class="st"><span class="hljs-string">'timezone'</span></span> => <span class="st"><span class="hljs-string">'UTC'</span></span><span class="ot">,</span> <span class="ot">]</span> |
哦好吧,果然是这里的问题。 由于我喜欢配置文件集中管理,并且Laravel不是有一个.env配置文件么,那就好好利用一下吧。 观察配置文件里其他内容发现,有一个env()函数,猜测这个就是从.env中获取配置项value的函数了,不管怎么样,先试一下就对了,试试又不会怀孕嘛…… 试着对app.php做了如下改动
1 2 3 |
<span class="ot">[</span> <span class="st"><span class="hljs-string">'timezone'</span></span> => env<span class="ot">(</span><span class="st"><span class="hljs-string">'TIMEZONE'</span></span><span class="ot">,</span><span class="st"><span class="hljs-string">'UTC'</span></span><span class="ot">),</span> <span class="ot">]</span> |
在.env文件中添加一行TIMEZONE=Asia/Shanghai之后,重新创建了一笔交易,用沙箱支付宝支付了一下,诶,可行 -_- 好了,就是这样,Laravel修改时区的教程到此结束,看我啰嗦了这么多,其实也就那两句。 from:https://www.cnblogs.com/wxjblog/p/6940195.html
View Details在php中开启与关闭错误提示的方法有几种一种可以直接在程序中使用相关函数来开户,另一种我们可以使用php.ini中配置参数来控制,下面小编来给各位同学介绍一下。 windows系统开关php错误提示 如果不具备修改php.ini的权限,可以将如下代码加入php文件中:
1 2 |
ini_set("display_errors", "On"); error_reporting(E_ALL | E_STRICT); |
当然,如果能够修改php.ini的话,如下即可:
1 2 3 |
找到display_errors = On 修改为 display_errors = off 注意:如果你已经把PHP.ini文件复制到windows目录下,那么必须同时把c:windows/php.ini里的display_errors = On 修改为display_errors = off PHP .ini中display_errors = Off失效的解决 |
在linux系统中开启与关闭错误提示方法差不多,不过我还是具体给大家介绍一下 linux系统下 1. 打开php.ini文件。 以我的ubuntu为例,这个文件在: /etc/php5/apache2 目录下。 2. 搜索并修改上下行,把Off值改成On
1 |
display_errors = Off |
3. 搜索下行
1 2 3 4 5 |
error_reporting = E_ALL & ~E_NOTICE 或者搜索: error_reporting = E_ALL & ~E_DEPRECATED 修改为 error_reporting = E_ALL | E_STRICT |
4. 修改Apache的 httpd.conf, 以Ubuntu 为例, 这个文件在:/etc/apache2/ 目录下,这是一个空白文件。 添加以下两行:
1 2 |
php_flag display_errors on php_value error_reporting 2039 |
5. 重启Apache,就OK了。 重启命令: :
1 |
sudo /etc/init.d/apache2 restart |
在php中静态方法我们就直接在函数或变量前加一个static就可以了,使用的时候和静态变量差不多,不需要实例化,直接用::调用了,下面我来给大家举几个关于静态方法实例。 PHP也不例外!所谓静态方法(属性)就是以static关键词标注的属性或者方法(例如:静态属性public static username;) 静态方法和非静态方法最大的区别在于他们的生命周期不同,用一个实例来说明 静态方法定义 定义静态方法很简单,在声明关键词function之前加上static,例如:
1 2 3 4 5 6 7 |
class A { static function fun() { // do somathing } } |
静态方法使用 使用的时候和静态变量差不多,不需要实例化,直接用::调用,例如:
1 |
A::fun() |
对比普通方法 因为静态方法的调用不需要实例化,所以在静态方法中引用类自身的属性或者方法的时候会出错,也就是形如self和$this是错误的。
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 |
class MyClass { public $num = 5; function __construct() { $this->num = 10; } function fun_1() { echo "I am a public method named fun_1.n"; echo "The num of object is {$this->num}.n"; } static function fun_2() { echo "I am a static method named fun_2.n"; } function fun_3($n) { echo "The arg is {$n}n"; } } $m = new MyClass; $m->fun_1(); $m->fun_2(); $m->fun_3('test'); MyClass::fun_1(); MyClass::fun_2(); MyClass::fun_3('test'); 输出结果: lch@localhost:php $ php class_method.php I am a public method named fun_1. The num of object is 10. I am a static method named fun_2. The arg is test I am a public method named fun_1. PHP Fatal error: Using $this when not in object context in /Users/lch/program/php/class_method.php on line 14 |
再看一实例 用一个实例来说明。
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 |
class user{ public static $username; //声明一个静态属性 public $password; //声明一个非静态属性 function __construct($pwd) { echo ‘Username:’,self::$username; //输出静态属性 self::$username = ‘admin’; //为静态属性赋值 $this->password = $pwd; //为非静态属性赋值 } public function show(){ //输出类属性 echo ‘ Username:’,self::$username; echo ‘ Password:’,$this->password; } public static function sshow(){ echo ‘ Username:’,self::$username; echo ‘ Password:’,$this->password; } } user::$username = ‘root’; //为赋值user类的静态属性赋值 $objUser = new user(’123456′); //实例化user类 $objUser->sshow(); unset($objUser); echo ‘ Username:’,user::$username; /* * 输出结果为: * Username:root * Username:admin * Password:123456 * Usern ame:admin * */ |
从这里实例中可以看出,静态属性在类实例化以前就起作用了,并且在对象被销毁时静态属性依然可以发挥作用! 也因为静态方法的这种属性,所以不能在静态方法中调用非静态属性或者方法 接着看 1、php类中,假设所有的属性与方法的可见性为public,那么在外部访问类的方法或属性时,都必须通过对象【类的实例化过程】来调用。 eg:
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 |
class Log { public $root = DIRECTORY_SEPARATOR; public $logPath = '/data/app/www/test-realtime.monitoring.c.kunlun.com/log'; public $defaultDir = 'default'; public function writeLog($logName, $logType, $data, $newDir = FALSE) { $fileName = ''; if (!file_exists($this->logPath)) { mkdir($this->logPath, 0777); } if ($newDir !== FALSE) { @mkdir($this->logPath.$this->root.$newDir, 0777); $fileName = $this->logPath.$this->root.$newDir.$this->root.date('Y-m-d', time()).'_'.$logName.'_'.$logType.'.log'; } else { @mkdir($this->logPath.$this->root.$this->defaultDir, 0777); $fileName = $this->logPath.$this->root.$this->defaultDir.$this->root.date('Y-m-d', time()).'_'.$logName.'_'.$logType.'.log'; } file_put_contents($fileName, date('Y-m-d H:i:s').' '.$data."n", FILE_APPEND); } } |
类的实例化对象的过程:$logObj = new Log(); 访问类中的方法:$logObj->writeLog($param1, $param2, $param3, $param4); 访问类中的属性:echo $logObj->root; 2、如果类中的属性前被static关键字修饰时,就不能通过对象来访问被static修饰的属性,但如果是类中的方法被static修饰时则即可以通过对象也可以通过类名::方法名的方式来进行访问。 3、如果类中的方法被static修饰则,方法中不能用$this,$this指的是类的实例化对象,由于静态方法不用通过对象就可以调用,所以伪变量$this不可用。 魔术方法是在php5中以__开头的,它们有着魔术般的功能,可以给我开发带来很多好处,下面我来给大家介绍魔术方法一些用法与在php中有那些魔术方法吧。 魔术方法是以两个下划线"__"开头、具有特殊作用的一些方法,可以看做php的"语法糖"。 语法糖指那些没有给计算机语言添加新功能,而只是对人类来说更"甜蜜"的语法。语法糖往往给程序员提供了更实用的编程方式或者一些技巧的用法,有益于更好的编码风格,是代码更易读。不过其并没有给语言添加什么新东西。php里的引用、SPL等都属于语法糖。
1 2 |
$tom = new family($student,'peking'); $tom = people->say(); |
上面family类中的construct方法就是一个标准魔术方法。这个魔术方法又称构造方法。有构造方法就有对应的西沟方法,即destruct方法,西沟方法会在某个对象的所有引用都被删除,或者当对象被显式销毁时执行。这两个方法是常见也是最游泳的魔术方法。 1、__get、__set 这两个方法是为在类和他们的父类中没有声明的属性而设计的。 ◆__get( […]
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 Details1、查找字符位置函数: strpos($str,search,[int]):查找search在$str中的第一次位置从int开始; stripos($str,search,[int]):函数返回字符串在另一个字符串中第一次出现的位置。该函数对大小写不敏感 strrpos($str,search,[int]):查找search在$str中的最后一次出现的位置从int 2、提取子字符函数(双字节) substr($str,int start[,int length]):从$str中strat位置开始提取[length长度的字符串]。 strstr($str1,$str2):从$str1(第一个的位置)搜索$str2并从它开始截取到结束字符串;若没有则返回FALSE。 stristr() 功能同strstr,只是不区分大小写。 strrchr() 从最后一次搜索到的字符处返回;用处:取路径中文件名 3、替换字符串 str_replace(search,replace,$str):从$str中查找search用replace来替换 str_irreplace(search,replace,$str): strtr($str,search,replace):这个函数中replace不能为”"; substr_replace($Str,$rep,$start[,length])$str原始字符串,$rep替换后的新 字符串,$start起始位置,$length替换的长度,该项可选 4、字符长度 int strlen($str) 5、比较字符函数 int strcmp($str1,$str2):$str1>=<$str2分别为正1,0,-1(字符串比较) strcasecmp() 同上(不分大小写) strnatcmp(“4″,”14″) 按自然排序比较字符串 strnatcasecmp() 同上,(区分大小写) 6、分割成数组函数 str_split($str,len):把$str按len长度进行分割返回数组 split(search,$str[,int]):把$str按search字符进行分割返回数组int是分割几次,后面的将不分割 expload(search,$str[,int]) 7、去除空格:ltrim、rtrim、trim 8、加空格函数 chunk_split($str,2);向$str字符里面按2个字符就加入一个空格; 9、chr、ord–返回指定的字符或ascii 10、HTML代码有关函数 nl2br():使\n转换为<br>。 strip_tags($str[,'<p>']):去除HTML和PHP标记 在$str中所有HTML和PHP代码将被去除,可选参数为html和PHP代码作用是将保留 可选参数所写的代码。 如:echo strip_tags($text, ‘<br><p>’); htmlspecialchars($str[,参数]):页面正常输出HTML代码参数是转换方式 11、字符大小写转换函数 strtolower($str) 字符串转换为小写 strtoupper($str) 字符串转换为大写 ucfirst($str) 将函数的第一个字符转换为大写 ucwords($str) 将每个单词的首字母转换为大写 12、数据库相关函数 addslashes($str):使str内单引号(’)、双引号(”)、反斜线(\)与 NUL 字符串转换为\’,\”,\\。 magic_quotes_gpc = On 自动对 get post cookie的内容进行转义 get_magic_quotes_gpc()检测是否打开magic_quotes_gpc stripslashes() 去除字符串中的反斜杠 13、连接函数 implode(str,$arr) 将字符串数组按指定字符连接成一个字符串;implode()函数有个别名函数join addcslashes —— 为字符串里面的部分字符添加反斜线转义字符 addslashes —— 用指定的方式对字符串里面的字符进行转义 bin2hex —— 将二进制数据转换成十六进制表示 chr —— 返回一个字符的ASCII码 chunk_split —— […]
View Details