install.php自动安装失败
发现代码使用mysql_connect函数连接数据库
参数server:当server未定义或是localhost时,是采用socket file访问数据库。
这个socket是通过php.ini的配置选项mysql.default_socket获得
关于mysql.default_socket的解释
即当使用本地连接的时候,默认的socket名称
意思是配置选项未定义时使用内置的socket
使用浏览器访问test.php脚本,脚本内容:
mysql的信息
结果说明: 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不能使用
在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.