install.php自动安装失败

安装好ocs server后,进行下面操作
1、建立ocsweb数据库,然后对ocsweb进行用户授权
>create database ocsweb;
>grant all on ocsweb.* to ocs@localhost identified by 'password';
2、修改ocsinventory-server.conf 配置文件
PerlSetVar OCS_DB_PWD password
3、重启webserver
在浏览器输入http://apache_server_ip/ocsreports,出现下面界面
ocs问题集结_DBI connect
出现如下错误:

ocs问题集结_DBI connect_02

问题定位:访问socket出现问题,配置不完善
问题解决:修改php的配置文件php.ini
将mysql.default_socket设置成/usr/local/ocs/lamp/mysql/data/mysql.sock
ocs问题集结_ocs_03ocs问题集结_Can't load SOAP:_04
重启webserver,ok.
问题分析:代码怎么获取mysql socket
查看ocsreports/require/function_commun.php
ocs问题集结_ocs_05
发现代码使用mysql_connect函数连接数据库
ocs问题集结_ocs_06
参数server:当server未定义或是localhost时,是采用socket file访问数据库。
这个socket是通过php.ini的配置选项mysql.default_socket获得
关于mysql.default_socket的解释
ocs问题集结_ocs_07
即当使用本地连接的时候,默认的socket名称
ocs问题集结_export XML_08
意思是配置选项未定义时使用内置的socket
使用浏览器访问test.php脚本,脚本内容:
ocs问题集结_ocs_09
mysql的信息
ocs问题集结_ocs_10
ocs问题集结_Can't load SOAP:_11
ocs问题集结_DBI connect_12
这个选项配置后,mysql信息
ocs问题集结_DBI connect_13
ocs问题集结_ocs_14
结果说明: mysql.default_socket是使用本地连接时默认使用的socket. MYSQL_SOCKET是内置的socket.MYSQL_SOCKET,是在安装php时通过--with-mysql-sock定义的. 总结: 启动mysql时最好加上--socket参数指定socket.使用mysql_connect连接数据库,server的形式最好是"ip:port".
ACCESS DENIED for XML export
修改/usr/local/ocs/lamp/apache/htdocs/ocsreports/plugins/main_sections/conf/sadmin_config.txt文件
<PAGE_PROFIL>...</PAGE_PROFIL>添加一行"ms_export_ocs:(true|ms_export_ocs)",重启apache服务即可导出xml文件
这里要注意一个问题:
如果在<RESTRICTION>...</RESTRICTION>添加一行"EXPORT_XML:YES", 那么导出xml链接功能消失
ocsinventory-server: Can't load SOAP::Transport::HTTP* 1)需要安装perl-Apache2-SOAP模块  2)或者注释PerlModule Apache::Ocsinventory::SOAP没有这个模块,web service不能使用 
安装ocs-agent出现[error] Cannot establish communication : 404 Not Found,

在httpd.conf加入 Include ocsinventory-server.conf后错误变成,

[error] Cannot establish communication : 500 Internal Server Error,

查看ocs server的apache日志 tail logs/error_log发现 Can't call method "do" on an
undefined.

后来将OCS_OPT_DBI_PRINT_ERROR设置成1(输出perl访问数据库的错误信息)

tail logs/error_log 发现DBI connect('database=ocsweb;host=localhost;

host=localhost;port=3306','ocs',...) failed: Can't connect to local MySQL server

through socket '/usr/local/ocs/lamp/mysql/tmp/mysql.sock'

原来ocs server默认的mysql sock path is '/usr/local/ocs/lamp/mysql/tmp/mysql.sock'

安装时mysql sock的目录是"/usr/local/ocs/lamp/mysql/data/mysql.sock"

将OCS_OPT_DBI_MYSQL_SOCKET设置成 "/usr/local/ocs/lamp/mysql/data/mysql.sock"

重启服务后,再运行ocsinventory-agent --server=http://ocs_server_ip/ocsinventory --debug

It's OK.