这几天,我一直在尝试在 Linux 上安装 OrangeHrm 的最新稳定开源版本 3.3.3。我尝试过在 CentOS 7、Ubuntu Server 16.04、Ubuntu Server 14.04 上安装。我将这些都安装在 VirtualBox 上。我遵循了不同网站上解释的不同指南。例如。
在每次安装中,当我访问虚拟机内部或从主机访问时,都会出现内部服务器错误和空白页。
我输入数据库详细信息后出现错误。
错误发生在install.php
chrome 上,并且显示installerUI.php
在开发工具中。
我尝试了现有的空白数据库和新数据库。既尝试了 root DB 用户,也尝试了其他特权用户。
我更愿意将它安装在 CentOS 上。
我认为安装一定非常简单,我可能遗漏了一些简单的细节。
任何指导和资源都将不胜感激。
答案1
我也遇到了同样的问题。解决方法如下:
首先,一般来说,你可以跟踪orangehrm.log在您的安装中检查错误。它将位于您的 orangehrm 文件夹中,路径为 ./symfony/log/orangehrm.log(例如:/var/www/html/symfony/log/orangehrm.log)。
对我来说,它说的是:
未捕获错误:调用未定义的函数 mysql_connect()
显然,它试图使用一组已弃用的函数,这些函数在 php7.0 上不可用。您发布的文章使用的是 php5,但在 Ubuntu 16.04 中,例如,php7 是默认的。
因此,请按照本文操作,删除默认的 php7.0(如果已安装)并安装PHP 5.6:
然后重新启动 Apache 服务器(sudo service apache2 restart
)并检查 PHP 版本。
之后,如果您拥有最新版本(MySQL 或 MariaDB),您还需要更改 MySQL 安装的默认编码,否则 OrangeHRM 的安装将失败。实际上,这是一种解决方法。自 5.5.3 版起,默认编码更改为 utf8mb4,允许在键、索引等上使用更少的字符。如果您不将其改回 utf8,您将看到错误指定的密钥太长;最大密钥长度为 767 字节在OrangeHRM安装过程中,无法创建表等。
编辑以下文件并指定 MySQL 的默认字符集:
sudo nano /etc/mysql/my.cnf
请注意,此文件可能位于不同位置。如果找不到,请运行:mysqld --help --verbose 2> /dev/null | grep -A1 'Default options'
以获取其他可能的路径。
编辑文件后,结果应如下所示(这只是文件内容的一部分):
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# This group is read both both by the client and the server
# use it for options that affect everything
#
[client-server]
[client]
default-character-set = utf8
[mysql]
default-character-set = utf8
[mysqld]
init-connect='SET NAMES utf8'
collation_server=utf8_unicode_ci
character_set_server=utf8
查找此配置的其他位置/文件:
/etc/mysql/conf.d/*.cnf
如果你使用 MariaDB:
/etc/mysql/mariadb.conf.d/*.cnf
寻找任何定义默认字符集 = utf8mb4并将其更改为默认字符集 = utf8
执行以下命令来确保已获得所有内容:
mysql --print-defaults
然后重新启动 MySQL(sudo service mysql restart
)。
连接到 MySQL:
sudo mysql -u root -p
运行以下命令检查当前字符集值:
SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
现在,配置数据库本身(用实际值替换 your_db_name、your_db_user 和密码):
create database your_db_name CHARACTER SET utf8 COLLATE utf8_unicode_ci;
grant all privileges on your_db_name.* to 'your_db_user'@'localhost' identified by "password";
show databases;
flush privileges;
exit;
最后一件事:确保您有扩展/模块 php5.6-xml。如果没有,请安装它(sudo apt-get install php5.6-xml
),否则您将看到错误PHP 致命错误:调用未定义的函数 simplexml_load_file()在您的日志上,安装完成后您将无法登录OrangeHRM。
最后,再次尝试安装。确保使用“现有的空数据库”。
我的页面如下所示:
这里还有一些参考资料:
https://dba.stackexchange.com/questions/59126/set-value-of-character-set-client-to-utf8mb4 https://dba.stackexchange.com/questions/76788/create-a-database-with-charset-utf-8 https://dev.mysql.com/doc/refman/5.7/en/charset-connection.html