工作,学习,生活,这里将会有一些记录. 备用域名:http://meisw.wdlinux.cn 注册 | 登陆
浏览模式: 标准 | 列表全部文章

/usr/bin/ld: cannot find -lltdl

编译PHP5时提示

/usr/bin/ld: cannot find -lltdl
collect2: ld returned 1 exit status
make: *** [libphp5.la] Error 1

安装

yum install libtool-ltdl

yum install libtool-ltdl-devel

就可以了.

[root@localhost ~]# cat /etc/redhat-release
CentOS release 5.4 (Final)
[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.18-164.el5 #1 SMP Thu Sep 3 03:28:30 EDT 2009 x8
6_64 x86_64 x86_64 GNU/Linux
php-5.2.12

在用yum安装libtool-ltdl-devel后编译php-5.2.12提示下如

/usr/lib/libltdl.so: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make: *** [libphp5.la] Error 1

安装php-5.2.13没问题

----------------------------------

yum install libpng


configure: error: libjpeg.(a|so) not found
ln -sf libjpeg.so.62.0.0 libjpeg.so


configure: error: libpng.(a|so) not found.
yum install libpng-devel

Error: Client does not support authentication protocol requested by server; consider upgrading MySQL client

set password for user1@"localhost"=old_password('yourPassword');

UPDATE user SET Password = OLD_PASSWORD('newpwd')   WHERE  User = 'usrname';

flush privileges;

MYSQL 帮助:

A.2.3 Client does not support authentication protocol

MySQL 4.1 and up uses an authentication protocol based on a password hashing algorithm that is incompatible with that used by older clients. If you upgrade the server to 4.1, attempts to connect to it with an older client may fail with the following message:

shell> mysql
Client does not support authentication protocol requested
by server; consider upgrading MySQL client

To solve this problem, you should use one of the following approaches:

  • Upgrade all client programs to use a 4.1.1 or newer client library.
  • When connecting to the server with a pre-4.1 client program, use an account that still has a pre-4.1-style password.
  • Reset the password to pre-4.1 style for each user that needs to use a pre-4.1 client program. This can be done using the SET PASSWORD statement and the OLD_PASSWORD() function:
    mysql> SET PASSWORD FOR
        -> 'some_user'@'some_host' = OLD_PASSWORD('newpwd');
    Alternatively, use UPDATE and FLUSH PRIVILEGES:
    mysql> UPDATE mysql.user SET Password = OLD_PASSWORD('newpwd')
        -> WHERE Host = 'some_host' AND User = 'some_user';
    mysql> FLUSH PRIVILEGES;
    Substitute the password you want to use for ``newpwd'' in the preceding examples. MySQL cannot tell you what the original password was, so you'll need to pick a new one.
  • Tell the server to use the older password hashing algorithm:
    1. Start mysqld with the --old-passwords option.
    2. Assign an old-format password to each account that has had its password updated to the longer 4.1 format. You can identify these accounts with the following query:
      mysql> SELECT Host, User, Password FROM mysql.user
          -> WHERE LENGTH(Password) > 16;
      For each account record displayed by the query, use the Host and User values and assign a password using the OLD_PASSWORD() function and either SET PASSWORD or UPDATE, as described earlier.

For additional background on password hashing and authentication, see section 5.5.9 Password Hashing in MySQL 4.1.

configure: error: No curses/termcap library found

checking for termcap functions library... configure: error: No curses/termcap library found

安装 ncurses

还不行的话,加上 ./configure --with-named-curses-libs=/usr/lib/libncursesw.so.5

 

-------------------------------------------------

Notice: Following unknown configure options were used:

--with-png


--with-png-dir=/usr

phpmyadmin 无法载入 mcrypt 扩展,<br />请检查 PHP 配置

无法载入 mcrypt 扩展,<br />请检查 PHP 配置

windows下好解决,在php.ini里把相关的模块加载就可以了

在Linux,要以编译PHP里,加上相关选项

php config
--with-mcrypt[=DIR]     Include mcrypt support

在此之前,应该确认已安装 libmcrypt

可以在下面地址下载,手工编译安装
ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/

也可以用yum安装更方便

yum -y install libmcrypt
yum -y install libmcrypt-devel

如果没有安装,在编译PHP时,会提示如下
configure: error: mcrypt.h not found. Please reinstall libmcrypt.

apache2+php5.2,启动cache

./configure --prefix=/www/httpd --with-mpm=worker --enable-so --enable-rewrite --enable-cache --enable-mem-cache --enable-disk-cache --enable-static-htcacheclean  --enable-speling

./configure --prefix=/www/php --with-apxs2=/www/httpd/bin/apxs --with-gd=/usr/local/gd --enable-gd-native-ttf --with-jpeg-dir=/usr/local/jpeg --with-png-dir=/usr --with-ttf --with-zlib --with-freetype-dir=/usr/local/freetype --with-mysql=/www/mysql4118 --with-iconv --enable-mbstring --enable-ftp --with-curl --enable-maintainer-zts


php-5.2.8
checking for MySQL UNIX socket location... no
configure: error: Cannot find libmysqlclient_r under /www/servers/mysql4118.
Note that the MySQL client library is not bundled anymore!
要求mysql也要加上 --enable-thread-safe-client.
解决方法一:重新编译安装MYSQL的时候加上 --enable-thread-safe-client.
原因:--enable-thread-safe-client    #Compile the client with threads. 如果没有这个参数,编译php的时候会报"Cannot find libmysqlclient_r under”之类的错误。
其实这跟PHP没有关系
那是因为我在编译APACHE的时候,使用--with-mpm模块,所以就必须在编译MYSQL的时候加上 --enable-thread-safe-client.
这是PHP5.2的一个改进,在PHP5.2.0之前的版本都不需要MYSQL启用安全线程

解决方法二:编译之前,先处理一下mysql的库,默认查找libmysqlclient_r.so,可是mysql默认为libmysqlclient.so,内容完全一样,做个链接即可
# cd /data/mysql/lib/mysql/
# ln -s libmysqlclient.so.15.0.0 libmysqlclient_r.so
照做。
再次重新编译安装PHP
顺利通过!

 

php-5.2.8
[Fri Dec 19 15:55:51 2008] [crit] Apache is running a threaded MPM, but your PHP Module is not compiled to be thre
adsafe.  You need to recompile PHP.
Pre-configuration failed

编译apache启用了worker的mpm,编译PHP时就提示上面的.网上资料说,要在编译PHP也要加上相应的参数  --enable-maintainer-zts,但问题仍就,最后把apache的worker给取消就正常了.暂时试用段时间看

反垃圾邮件XBL,SBL,PBL,ROKSO

spamhaus是目前世界上影响最大反垃圾邮件组织,只要被它列入黑名单,你的邮件服务器就算瘫痪了,因为据说全球80%以上的服务器会拒收从你的邮件服务器发去邮件.他们提供四种类型XBL,SBL,PBL,ROKSO.国内有很多IP被列为了spamhaus这几类RBL当中.今天我们来说说如何对列为PBL的IP进行申诉.

首先到http://www.spamhaus.org/pbl/index.lasso 的Look Up中对你邮件服务器使用的IP进行查询

www.spamhaus.org提供包括以下的几种:

XBL(Exploits Block List):它是针对因为安全问题被劫持(比如僵尸机)或是蠕虫/病毒,带有内置式垃圾邮件引擎和其他类型的木马来发垃圾邮机器的实时黑名单IP列表。它的数据主要来源于两个合作组织:cbl.abuseat.org及www.njabl.org.因为被列入XBL的服务器大多为被第三方劫持利用,所以有可能导致误判断。

SBL(The Spamhaus Block List):它是已经经过验证的垃圾邮件源及确有垃圾邮件发送行为的实时黑名单列表。它也是spamhaus最主要的项目之一,由分布在全世界9个国家的,每周7天,每天24小时进行列入新记录和删除记录的工作。所以,这个列表可信度高使用人数也多。如果你被列入算是严重事件,被列入后,需要你的ISP(电信或是网通)的IP管理人员去和Spamhaus联系才有可能移除。

PBL(The Policy Block List):它主要是包含动态IP及哪些允许未经验证即可发送邮件的SMTP服务器的IP地址段。这一个列表最明显的特点就是提供了一个IP地址移除的自助服务,IP它列入后,可以自己申请移除。所以就算是被PBL列入,影响并不大,请要使用移除功能移除即可,方法请看:spamhaus的PBL申诉图解 http://www.5dmail.net/bbs/viewth ... p%3Bfilter%3Ddigest

ZEN:这个简单,就是上面三个的合集,即包括上面XBL,SBL,PBL的数据。

ROKSO(The Register of Known Spam Operations):这个最严重了。字面上就可以理解了进了这个数据库的人物都是有确切的证据证明垃圾邮件行为。属于专业的发送垃圾邮件的组织或是个人。spamhaus认为全世界80%的垃圾邮件来自于这个数据库中的成员发出。根据spamhaus列出截止4/11/08的名单的数据显示,112条记录中我国有9笔,其中中国4笔,香港2笔,台湾3笔.而美国占大部分,所以难怪大家收到的都是英文的垃圾邮件了。

经上所述:

1)如果你考虑选哪一个RBL的话,我建议保守的是用SBL,然后选XBL+SBL.最后是ZEN;

2)如果你提心被哪一个列被最严重,按严重级别由重到轻分别为:ROKSO->SBL->XBL->PBL

XMLHTTP应用参考

一、使用步骤:
1、创建XMLHTTP对象 //需MSXML4.0支持
2、打开与服务端的连接,同时定义指令发送方式,服务网页(URL)和请求权限等。客户端通过Open命令打开与服务端的服务网页的连接。与普通HTTP指令传送一样,可以用"GET"方法或"POST"方法指向服务端的服务网页。
3、发送指令。
4、等待并接收服务端返回的处理结果。
5、释放XMLHTTP对象
 
二、XMLHTTP方法:
Open( bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword )
bstrMethod:  数据传送方式,即GET或POST。
bstrUrl:     服务网页的URL。
varAsync:   是否同步执行。缺省为True,即同步执行,但只能在DOM中实施同步执行。用中一般将其置为False,即异步执行。
bstrUser:    用户名,可省略。
bstrPassword:用户口令,可省略。
 
Send( varBody )
varBody:指令集。可以是XML格式数据,也可以是字符串,流,或者一个无符号整数数组。也可以省略,让指令通过Open方法的URL参数代入。
 
setRequestHeader( bstrHeader, bstrvalue )
bstrHeader:HTTP 头(header)
bstrvalue: HTTP 头(header)的值 

如果Open方法定义为POST,可以定义表单方式上传:
xmlhttp.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded")
 
三、XMLHTTP属性:
onreadystatechange:在同步执行方式下获得返回结果的事件句柄。只能在DOM中调用。
responseBody:    结果返回为无符号整数数组。
responseStream:   结果返回为IStream流。
responseText :    结果返回为字符串。
responseXML:    结果返回为XML格式数据。

四、示例:
< script language="JavaScript" >
function getDatal(url){
    var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP.4.0");//创建XMLHTTPRequest对象,需MSXML4.0支持 ["MSXML2.XMLHTTP.4.0","MSXML2.DOMDocument.4.0"]
    xmlhttp.open("POST",url,false,"","");   //使用HTTP GET初始化HTTP请求
    xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded") ;
    xmlhttp.send("param=aa");                   //发送HTTP请求并获取HTTP响应
    return xmlhttp.responseText;         //获取返回结果字符串
}
< /script >

----------------------

XMLHTTP对象及其方法
------------------
MSXML中提供了Microsoft.XMLHTTP对象,能够完成从数据包到Request对象的转换以及发送任务。
创建XMLHTTP对象的语句如下:
Set objXML = CreateObject("Msxml2.XMLHTTP") 或
Set objXML = CreateObject(“Microsoft.XMLHTTP”)
' Or, for version 3.0 of XMLHTTP, use:
' Set xml = Server.CreateObject("MSXML2.ServerXMLHTTP")
对象创建后调用Open方法对Request对象进行初始化,语法格式为:
poster.open http-method, url, async, userID, password
Open方法中包含了5个参数,前三个是必要的,后两个是可选的(在服务器需要进行身份验证时提供)。参数的含义如下所示: 
http-method: HTTP的通信方式,比如GET或是 POST
url: 接收XML数据的服务器的URL地址。通常在URL中要指明 ASP或CGI程序
async: 一个布尔标识,说明请求是否为异步的。如果是异步通信方式(true),客户机就不等待服务器的响应;如果是同步方式(false),客户机就要等到服务器返回消息后才去执行其他操作
userID 用户ID,用于服务器身份验证
password 用户密码,用于服务器身份验证
XMLHTTP对象的Send方法
用Open方法对Request对象进行初始化后,调用Send方法发送XML数据:
poster.send XML-data
Send方法的参数类型是Variant,可以是字符串、DOM树或任意数据流。发送数据的方式分为同步和异步两种。在异步方式下,数据包一旦发送完毕,就结束Send进程,客户机执行其他的操作;而在同步方式下,客户机要等到服务器返回确认消息后才结束Send进程。
XMLHTTP对象中的readyState属性能够反映出服务器在处理请求时的进展状况。客户机的程序可以根据这个状态信息设置相应的事件处理方法。属性值及其含义如下表所示:
值 说明
0 Response对象已经创建,但XML文档上载过程尚未结束
1 XML文档已经装载完毕
2 XML文档已经装载完毕,正在处理中
3 部分XML文档已经解析
4 文档已经解析完毕,客户端可以接受返回消息
客户机处理响应信息
客户机接收到返回消息后,进行简单的处理,基本上就完成了C/S之间的一个交互周期。客户机接收响应是通过XMLHTTP对象的属性实现的:
● responseTxt:将返回消息作为文本字符串;
● responseXML:将返回消息视为XML文档,在服务器响应消息中含有XML数据时使用;
● responseStream:将返回消息视为Stream对象。
资料引用:http://www.knowsky.com/5190.html

一个比较全面的创建 XMLHttpRequest 的代码:


function getXmlHttpPrefix() {
if (getXmlHttpPrefix.prefix)
return getXmlHttpPrefix.prefix;

var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"];
var o;
for (var i = 0; i < prefixes.length; i++) {
try {
// try to create the objects
o = new ActiveXObject(prefixes[i] + ".XmlHttp");
return getXmlHttpPrefix.prefix = prefixes[i];
}
catch (ex) {};
}

throw new Error("Could not find an installed XML parser");
}

//////////////////////////
// Start the Real stuff //
//////////////////////////


// XmlHttp factory
function XmlHttp() {}

XmlHttp.create = function () {
try {
if (window.XMLHttpRequest) {
var req = new XMLHttpRequest();

// some versions of Moz do not support the readyState property
// and the onreadystate event so we patch it!
if (req.readyState == null) {
req.readyState = 1;
req.addEventListener("load", function () {
req.readyState = 4;
if (typeof req.onreadystatechange == "function")
req.onreadystatechange();
}, false);
}

return req;
}
if (window.ActiveXObject) {
return new ActiveXObject(getXmlHttpPrefix() + ".XmlHttp");
}
}
catch (ex) {}
// fell through
throw new Error("Your browser does not support XmlHttp objects");
}; 

-------------------------------

var xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
var xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
var xmlHttp=new ActiveXObject("MSXML.XMLHTTP");
var xmlHttp=new ActiveXObject("MSXML3.XMLHTTP");
这几个代码都有可能, 上面的代码就遍历这些对象选择一个创建成功的出来, 区别就是操作系统带的 MSXML 包的版本不一样, 这些包是 ActiveX 控件, IE 和很多 Windows 应用都可能用到它. 对于 Mozilla, Firefox, 直接用
var xmlHttp = new XMLHttpRequest();
就可以了.