|
发表于 2004-10-7 15:09:51
|
显示全部楼层
问题解决之道
不应该是这样的
最初由 swordzjj 发表
trustix的问题多多,我已经放弃了
为什么我们要用trustix?就是因为它默认设置的安全,因为安全设置,所以有很多程序在默认情况下是不能正常工作的
mambo是apche+php+mysql架构的,所以我们要查找的是我们的这个lamp的工作环境是否适合你的程序
在 html目录下添加一个test.php
内容:<?phpinfo();?>
按照Trustix讨论组里的建议,chmod 644 test.php后,可以正常显示php信息
好,这说明,你的apche+php的工作环境是正常的,那么,你察看了你的phpinfo的mysql相关部分的输出信息了吗?以下是我的phpinfo的输出
- mysql
- MySQL Support enabled
- Active Persistent Links 0
- Active Links 0
- Client API version 4.0.18
- MYSQL_MODULE_TYPE external
- MYSQL_SOCKET /var/run/mysql/mysql.sock
- MYSQL_INCLUDE -I/usr/include/mysql
- MYSQL_LIBS -L/usr/lib -lmysqlclient
复制代码
跟你的输出相比较,是否存在差别?
1。如果你的输出根本没有mysql这一节的话的话,说明你的php不支持mysql,也就是说,你没有安装mod_php4-mysql这个rpm包
2。如果你的输出有mysql这节的话,可是你的MySQL Support 的输出为disable的话,说明你的php支持mysql,可是你没有打开相应的mysql支持。也就是说,你应该修改你的php设置文件php.ini,如果你是用rpm包安装的话,就是修改/etc/httpd/php.ini,在中间找到
将之修改为
3。其实我上面说的两条多半是废话,现在我们来说trustix默认安全设置会影响到你的apache+php+mysql环境的地方:
不知道你有没有注意到我的phpinfo的mysql输出中的这条?
- MYSQL_SOCKET /var/run/mysql/mysql.sock
复制代码
如果你的php是默认安装的话,肯定是没有这条了,这条记录说明了什么?
请确认你的mysql服务已经启动了,在你的shell底下输入
看Active Internet connections (servers and established)的输出
没有看到有本机3306的端口在侦听吧?这是因为trustix2.1默认的mysql是取消了网络侦听的,只给各个应用程序用本地的mysql.sock来连接,而你的php是不支持MYSQL_SOCKET连接的,当然你的php连接mysql数据库会有问题了
问题找到了,解决方法也就出来了
a.重新编译你的php,让它支持MYSQL_SOCKET,这个东西你自己去google,相关的资料多的要死
然后把php的mysql.default_socket 指向你系统的mysql.sock的正确位置,在trustix2.1底下就是/var/run/mysql/mysql.sock
b.让你的mysql在网络上侦听,修改/etc/my.cnf,找到下面这节
- # The MySQL server
- [mysqld]
- port = 3306
- socket = /var/run/mysql/mysql.sock
- skip-networking
复制代码
将skip-networking这行注释掉,重新启动mysql即可
最后,我没有用过mambo的,不知道它具体对php还有什么要求,所以以上讲的只是通常的问题思考步骤,只是给你一个解决问题的思维方法,如此而已 |
|