在安装php的make时候,出现错误"chmod: cannot access `ext/phar/phar.phar': No such file or directory"的解决办法
5 Feb, 2012 in 服务器类在对php进行configure的时候,只需要在./configure的后面加上--without-pear 即可.
Browsing the archives for the php tag
在对php进行configure的时候,只需要在./configure的后面加上--without-pear 即可.
近日在编译php,make的时候出错: /root/dev/php-5.3.6/sapi/cli/php: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory make: *** [ext/phar/phar.php] Error 127 =================================================== 网上找到的解决办法是: ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/ 照做后仍然报错,原因是该方法适用于32位系统,64位系统应使用下面的这行 ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/ 另外:在编译的时候,不写mysql的路径,而使用mysqlnd代替,也可解决该问题的出现。
刚刚发布了Centos6.1新版本.就下载了64位的版本进行测试. 按照原来的lnmp安装教程.在安装php的过程中.执行到./configure 这一步的时候.竟然提示"configure: error: libjpeg.(a|so) not found"这项错误.明明已经安装过了libjpeg 和libjpeg-devel了.可这里仍然提示找不到库文件.很明显是路径的问题.默认会在/usr/lib/目录里查找相应的文件.但用whereis libjpeg发现.libjpeg被安装在了/usr/lib64/目录里. [root@bogon php-5.2.17]# whereis libjpeg libjpeg: /usr/lib/libjpeg.so /usr/lib64/libjpeg.so 1.如果提示"configure: error: libjpeg.(a|so) not found"错误 所以这里我们需要复制一份libjpeg.so到/usr/lib/目录里才可以.再次执行./configure命令即可. cp -frp /usr/lib64/libjpeg.* /usr/lib/ 2.注意过程中还会提示" Configure: error: libpng.(also) not found."错误,解决办法和上面的一样. cp -frp /usr/lib64/libpng* /usr/lib/ 3.如果提示"configure: error: Cannot find ldap libraries in /usr/lib."的话. cp -frp /usr/lib64/libldap* /usr/lib/ 说明: 通过上面的搜索其实就知道一些原因了,configure一般的搜索编译路径为/usr/lib/下,因为php默认就在/usr/lib/下找相关库文件,而x64机器上是在:/usr/lib64.这时你就可以直接把需要的库文件从/usr/lib64中拷贝到/usr/lib/中去就可以了. 常见错误参考:http://apps.hi.baidu.com/share/detail/11746738
先阅读手册 ========== 从函数返回一个引用,必须在函数声明和指派返回值给一个变量时都使用引用操作符 & : 例子 17-13. 由函数返回一个引用 <?php function &returns_reference() { return $someref; } $newref =& returns_reference(); ?> 有关引用的更多信息, 请查看引用的解释。 在来看一段很多开源代码喜欢用的单例注册模式 <?php class a{} class b{} function & aa($name) { static $class = array(); if(!$class[$name]) { $class[$name] = new $name(); } return $class[$name]; } $a = & aa('a'); $b = & aa('b'); $a2 = [...]
PHP 5.3 下,Zend Optimizer 已经被全新的 Zend Guard Loader 取代 ------------------------------------------------ 1. 下载 Zend Guard Loader 压缩包。(官方下载地址:http://www.zend.com/en/products/guard/downloads) 2. 解压并提取 ZendGuardLoader.so(Linux)或 ZendLoader.dll(Windows),对应你的PHP版本。 3. 在你的 php.ini 文件添加下面一行,用来加载 Zend Guard Loader: Linux 和 Mac OS X: zend_extension = 完整路径/ZendGuardLoader.so Windows(非线程安全): zend_extension = 完整路径/ZendLoader.dll 4. 在 php.ini 额外新增一行,启用 Zend Guard Loader: zend_loader.enable = 1 5. 可选:可以在 php.ini 文件添加以下行到 Zend Guard Loader 配置位置:
1.隐藏php版本 2.禁用危险的php函数 3.命令注入攻击 4.SQL注入攻击 5.xss攻击 6.会话劫持攻击 7.关闭注册全局变量 8.上传文件 9.远程包含、本地包含 10.Php.ini包含补丁文件,我们可以根据需要,通过它包含或者nginx的模块 1.隐藏php版本 expose_php=off 2.禁用危险的php函数 popen,pentl_exec,passthru,exec,system,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,show_source,escapeshellcmd,escapeshellarg,curl_exec,curl_multi_exec,parse_ini_file,assert 至于eval函数,我们用suhosin把这些全部都加进eval的黑名单
提示不支持这个函数,于是在php.ini文件里启用了扩展,把前面的;去掉,重启apache,竟然不起作用.后来查找了一下,原来还需要两个dll(libeay32.dll、ssleay32.dll)文件支持,将dll复制到c:/windows/system32目录里.然后重启apache即可. 特在此记录一下.
for ( $i = 1; $i < 100; $i++ ) { $str = str_repeat('01234567', $i); $a = memory_get_usage(); unset($str); $b = memory_get_usage(); echo "\n ".$i.': '.($b - $a).' Bytes.'; } 从结果看出: 8 x 32 = 256 在256字节长的时候才真正有必要释放内存,有些人说,不如直接$str = null来的速度快。
Redis支持的客户端种类非常多,包括C、Java、PHP、Python等,本文主要介绍PHP客户端的安装和使用。 Redis的客户端实际上担负了通过网络协议与Redis Server进行通信的过程,通信的过程必须遵循协议规范,让客户的调用更加符合特定语言的使用习惯。现有PHP客户端:rediska、phpredis、Predis、Redisent。这些可护短中,有纯PHP的实现方案,也有二进制版本的实现方案。 官方提供的PHP客户端列表如下:
今天更新了一下自己的cms,然后后台就提示登陆不了,报错如下:Failed to initialize storage module。 解决方法有两种如下: 1。在报错的文件里的session start();之前加入如下代码:ini_set(‘session.save_handler’, ‘files’); 。这种方法适合租用空间的用户使用。 2。在php.ini文件里,显式指定session的save_path(比如 c:/temp)然后重启web服务。如果服务器的管理权限属于你,那还是这样改比较方便。 原因分析:php5一个安全模式的bug,默认session的save_path是系统的临时目录,这样会要校验权限。 PHP中使用SESSION后出现Failed to initialize storage module错误的解决方法: 在session start之前加入以下这句话 ini_set('session.save_handler', 'files');