Ubuntu下使用源码包搭建LAMP环境错误笔记
1.编译环境错误:Ubuntu 10.04下仅预装了gcc编译环境,但安装此套环境的源码包还需要g++(即c++)的编译环境,需要安装g++软件,但这两者的版本需要同步,否则安装会出错,比较好的解决方案是使用如下的命令:
sudo apt-get install build-essential
来安装整套编译环境的套装软件(因为单独安装gcc与g++可能引发两者的版本不同步),装好后,编译环境即配置完成
2.编译libxml2时出错:
错误信息如下图:
解决方法:
打开目录下的nanohttp.c,第1588行由
fd = open(filename, O_CREAT | O_WRONLY);更换为
fd = open(filename, O_CREAT | O_WRONLY,0777);
网上查了一下,说该错误是由于gcc-4.3对语法检查严格所产生的错误
3.zlib库的解压错误:
如使用tar命令解压zlib包出错且确认该包是完整的,请使用其他的图形化解压软件[甚至可以用windows下的winrar]先解压此包,然后将解压得到的文件夹复制过去再进行编译安装即可.
4.编译autoconf时出现error: GNU M4 1.4 is required:
出现此错误是由于系统没有安装相关的软件包,打开网址:ftp.gnu.org/gnu/m4/下载用户喜欢的任一版本,用如下的命令进行编译安装即可:
(sudo) ./configure
(sudo) make
(sudo) make install
5.安装gd库时出错 make: *** Error 1:
出错原因:
系统无法找到png.h文件
解决方法:
进入gd库的解压目录编辑gd_png.c文件,找到如下的代码:
#include "png.g"
将之修改为:
#include "/usr/local/libpng/include/libpng12/png.h"
注意:修改的文件目录即您安装libpng库时对应文件的目录,此处需要根据您的安装路径酌情修改
6.Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName:
这是一个 warning,出现在apache2启动或重起时。主要是因为在配置 apache2 时,没有指定相应的主机名,即 ServerName。修改/etc/httpd/httpd.conf , 在最前加入 ServerName localhost:80 即可
7.配置mysql时出现错误configure: error: No curses/termcap library found:
说明 curses/termcap 库没有安装
apt-get install libncurses5-dev
8.配置mysql自启动时出错:
注释掉/etc/my.cnf里面的--skip-federated
9.mysql无法通过mysqld.sock连接错误的解决方法
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
chown mysql:mysql /var/run/mysqld
然后重启mysql:/usr/local/mysql/bin/mysql restart
10.apache重启报错
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
解决办法:#vim /usr/local/apache2/etc/httpd.conf (在这里/usr/local/apache2是我安装apache的目录,你默认安装的话应该是/usr/local/apache2/)
找到#ServerName www.example.com:80 把#去掉,再重启apache即可没事了。
11.phpize建立php扩展Cannot find config.m4
# phpize
Cannot find config.m4.
Make sure that you run /usr/local/bin/phpize in the top level source directory of the module
解决办法:
在/usr/local/src/php-4.3.5/ext下找到这个工具
来建立一个php扩展的一个框架
#cd /usr/local/src/php-4.3.5/ext/
# ./ext_skel --extname=sdomain
To use your new extension, you will have to execute the following steps:
1. $ cd ..
2. $ vi ext/sdomain/config.m4
3. $ ./buildconf
4. $ ./configure ---sdomain
5. $ make
6. $ ./php -f ext/sdomain/sdomain.php
7. $ vi ext/sdomain/sdomain.c
8. $ make
# cd sdomain/
# ls
config.m4 EXPERIMENTAL sdomain.php tests
CREDITS sdomain.c php_sdomain.h
然后我们要修改文件顺序是
configue.m4
sdomain.c
php_sdomain.h
使用文本编辑器打开config.m4文件,修改文件内容:
dnl PHP_ARG_WITH(my_module, for my_module support,
dnl Make sure that the comment is aligned:
dnl [ --with-my_module Include my_module support])
修改成
PHP_ARG_WITH(my_module, for my_module support,
[ --with-my_module Include my_module support])
或者将
dnl PHP_ARG_ENABLE(my_module, whether to enable my_module support,
dnl Make sure that the comment is aligned:
dnl [ --enable-my_module Enable my_module support])
修改成
PHP_ARG_ENABLE(my_module, whether to enable my_module support,
[ --enable-my_module Enable my_module support])
(其实就是将这部分的dnl去掉,在这个文件里dnl就是注释的意思,相当于我们PHP里面的#或// 另外把他中间的一句描术也去掉)
然后保存退出
然后在编辑
Vi my_module.c
将文件其中的下列代码进行修改
/* Every user visible function must have an entry in my_module_functions[].
*/
function_entry my_module_functions[] = {
PHP_FE(say_hello, NULL) /* ?添加着一行代码 */
PHP_FE(confirm_my_module_compiled, NULL) /* For testing, remove later. */
{NULL, NULL, NULL} /* Must be the last line in my_module_functions[] */
};
在文件的最后添加下列代码
PHP_FUNCTION(say_hello)
{
zend_printf("hello sdomain!");
}
再修改:php_sdomain.h
vi php_sdomain.h
在PHP_FUNCTION(confirm_my_module_compiled); /* For testing, remove later. */ 这行的下面添加一行:
PHP_FUNCTION(say_hello); /* For testing, remove later. */
保存文件退出
然后我们就可以在这个目录下使用上面的命令了
/usr/local/php/bin/phpize
页:
[1]