其实这跟PHP没有关系,那是因为在编译APACHE的时候,使用--with-mpm模块,所以就必须在编译MYSQL的时候加上 --enable-thread-safe-client.参数
这是PHP5.2的一个改进,在PHP5.2.0之前的版本都不需要MYSQL启用安全线程。关于--enable-thread-safe- client项的官方介绍如下:如何生成线程式客户端库总是线程安全的。最大的问题在于从套接字读取的net.c中的子程序并不是中断安全的。或许你可能 希望用自己的告警中断对服务器的长时间读取,以此来解决问题。如果为SIGPIPE中断安装了中断处理程序,套接字处理功能应是线程安全的。 SupeSite/X-为了避免连接中断时放弃程序,MySQL将在首次调用mysql_server_init()、mysql_init()或 mysql_connect()时屏蔽SIGPIPE。如果你打算使用自己的SIGPIPE处理程序,首先应调用 mysql_server_init(),然后安装你的处理程序.
还有第二种解决方法比较方便 :编译之前,先处理一下mysql的库,默认查找
libmysqlclient_r.so,可是mysql默认为libmysqlclient.so,内容完全一样,做个链接即可
# cd /usr/local/mysql/lib/mysql/
# ln -s libmysqlclient.so.15.0.0 libmysqlclient_r.so (以上解决方法来自互联网!) make(配置) 提示信息: Build complete.
Don't forget to run 'make test'. 解决方案:
不要make test 直接make install
还会报make: *** [ext/gd/gd.lo] error
解决方法如下:
好像说这个错误算是php5.4的bug,下面对应的两篇文章有对应的说明: https://bugs.php.net/bug.php?id=55224 https://bugs.php.net/bug.php?id=60108 解决方法:
vi
typedef struct gdIOCtx {
int (*getC) (struct gdIOCtx *);
int (*getBuf) (struct gdIOCtx *, void *, int); void (*putC) (struct gdIOCtx *, int);
int (*putBuf) (struct gdIOCtx *, const void *, int);
/* seek must return 1 on SUCCESS, 0 on FAILURE. Unlike fseek! */ int (*seek) (struct gdIOCtx *, const int); long (*tell) (struct gdIOCtx *); void (*gd_free) (struct gdIOCtx *); void (*data); }
gdIOCtx;
我的GD安装在/usr/local/gd2目录下,所以是#vi vi /usr/local/gd/include/gd_io.h libltdl.so.3: cannot open shared object file: No such file or directory make: *** [ext/phar/phar.php] Error 127 解决方法:
ln -s /usr/local/lib/libltdl.so.3 /usr/lib/libltdl.so.3 [root@localhost ~]# cd /usr/local/libpng/lib/ [root@localhost lib]# ls
libpng15.a libpng15.so libpng15.so.15.10.0 libpng.la pkgconfig libpng15.la libpng15.so.15 libpng.a libpng.so 可以看到libpng15.so.15
然后修改/etc/ld.so.conf 文件:vi /etc/ld.so.conf 在第一行下面追加/usr/local/libpng/lib这个路径。 然后重新配置编译安装即可。 从PHP的第一步配置开始,再来一遍。 解决方案:
不要make test 直接make install
安装完成后,需要建立PHP配置文件。在使用configure命令安装配置时使用
“--with-config-file-path=/usr /local/php/etc/”选项,指定了配置文件的位置。将源码包下面的php.ini-development 文件复制到/usr/local /php/etc/中,并改名为php.ini即可,如下示:
[root@localhost php-5.4.11]# cp php.ini-development /usr/local/php/etc/php.ini 修改php.ini 把;date.timezone 前面的分号去掉,改成date.timezone =\整合Apache与PHP,上面编译之前,我们使用configure命令安装配置时,使用
--with-apxs2=/usr/local /apache242/bin/apxs选项以使Apache 2将PHP作为功能模块使用。但我们还要修改Apahce配置文件,添加PHP的支持,告 诉Apache将哪些后缀作为PHP解析。例如,让Apache把.php或.phtml后缀名解析为PHP.使用vi打开Apache的配置文件 /etc/httpd/httpd.conf,找到AddType application/x-gzip .gz .tgz指令选项,并在其下方添加一 条指令AddType application/x-httpd-php .php .phtml。也可以将任何后缀的文件解析为PHP,只要在添加的语 句中加入并用空格分开,这里以多添加一个.phtml来示例,如下示:
# If the AddEncoding directives above are commented-out, then you # probably should define those extensions to indicate media types: #
AddType application/x-compress .Z AddType application/x-gzip .gz .tgz AddType application/x-httpd-php .php .phtml
修改完成后必须重启Apache服务器,才能重新加载配置文件使修改生效。 [root@localhost php-5.4.11]#/usr/local/apache243/bin/apachectl stop [root@localhost php-5.4.11]#/usr/local/apache243/bin/apachectl start
测试PHP环境是否可以正常运行,在/usr/local/apache243/htdocs目录下建一个test.php或test.phtml的文件,内容如下示:

