初识 WebERP

先决条件

l 高于 4.2 版本的 PHP。由于 PHP 可以做为一个 CGI(Common Gateway Interface 公共网关接口)模块在 MS IIS 上运行，或者作为 Apache 的一个模块运作在在 Windows(NT,2000,或者 XP)或者 Unix/Linux 平台上。因此本软件是独立于操作系统的。它已经在 Windows(NT 和 XP)以及 Linux 环境下做过测试。

l MySQL 版本高于 4,且有 Innodb 事务型表的支持功能。并且需要外键限制.他们是在 2003 年加进 Innob 的。Innodb 引擎在 2001 年被引入 MySQL.并且有了和甲骨文类似的功能—行水平锁定和数据库事务管理，但是速度却相似。(只要稍微修改，本软件也可以运行于甲骨文或者其他的数据库系统。)在 Mysql 的文档中，您通常可以在/usr/local/mysql/var 路径下，找到配置文件范本 my.cnf。那里您可以看到 Innodb 的典型配置设定。尽管在 Mysql 4 中，默认设置为 Innodb 可以创建一个自动扩展的数据文件，数据的期望大小还是有用的。在 2.8 版本中，所有的表都被定义为 Innodb 表。

l 网页服务器：我们建议使用 Apache—这款软件服务于大多网页，但是 PHP 以各种格式支持非常多的网页服务器。在 Windows 平台下，最流行的选择可能是 MS IIS.

l 如果网页服务器是通过互联网浏览，而不是仅限于内联网,这时需要加密传输。Openssl 和 apache 的 mod-ssl 可以很容易使用，来保证所有数据的传输均处于加密状态。

l 对于使用 utf-8 pdf 报告而言，如果使用语言不是英文，要求 adobe acrobat reader 安装了本土化支持的相关部分，如字体。PDF 报告使用 TCPDF 类产生，它默认使用 Adobe 的 CIF 字体—这样做的优点是 pdf 报告不需要捆绑大的 utf-8 字符集。

当数据是在互联网上传送而非仅仅是内联网时，使用 Apache 及 mod_ssl 模块和 openssl 是明智的。关于 MySQL 和 PHP 的安装详情，您可以从如下资源获得：

http://logidac.com/apache/apache-install-rpm.phtml

http://www.linux-sottises.net/en_apache_install.php

首要是确保 php.ini 里的设定 session.auto_start=0。有些 rpm 发行版把这个值默认设定为 1，这使在 PHP 代码中使用类成为不可能。类在系统内被广泛地应用。并且系统会在需要时启动 sessons。所以将其设定为 0 是安全的。

对于安装 PHP 最重要的问题看来是：

l 有些 Windows 的安装的设定是 session.save_path=/tmp.这对 window 而言是不合适的。并且应该改为 session.save_path=c:\temp 或者更合适的路径。

l 当系统安装在一个多用户的网页服务器（农场）上时，这个 session 是需要指定一个长期的路径，否则的话，其他可替代服务器服务提供后续的页面访问服务时，要依赖这个载入值就无法找到 session 的 cookie 了。配置文件 config.php 中的$SessionSavePath 需要针对网页服务器作适当设定。

l 由于未知的原因，有些服务器，在使用如下配置：$RootPath=dirnam($_SERVER[‘PHP_SEL’]);,不能自动取得正确的路径。这由不同系统选项无法找到页面链接而得到证明。如果出现了这种情况，可以直接将$RootPath 变量设置为脚本的根路径。

本系统可以运用于很多其他的数据库服务器，但是它是基于 MySQL 开发和测试的。系统管理员如有偏好，可以使用 Postgres 数据库，他可以通过设置 config.php 文件中的$dbtype 变量来使用 PostgresConnectDB.inc.本系统提供了 PostgresDatabase 备份,供安装一个 PostgresWebERP 使用。独立的测试显示 MySQL 在完成大多普通数据库任务时，是最快的数据库之一。它在建立连接时尤其迅速。由于网页的无状态属性，访问每个新页面都要求重新建立连接。这使 MySQL 特别适合 Web 为基础的程序。

如果需要与公司的知识库整合，需要在同一个网页服务器上安装 WackoWiki.这个完全由您决定，但是强烈建议用这种方式在整个公司范围分享自由格式的信息。http://wackowiki.com/WackoDownload/InEnglish?v=xlv

PHP 的 ftp 库仅仅限于对于远距离的仓库服务，发送一个订单文件给无线的 ftp 服务器。

使用 webERP 安装程序

1. 假设有 PHP 功能的网页浏览器已可以运作。安装在同一机器上或者运行在同一网络的 MySQL 服务器也可以使用，网页浏览器的使用者对于 webERP 的安装路径有读写权限，那么就可以进行安装了。

首先复制脚本到网页服务器的文件根目录。然后在网页浏览器中输入新 webERP 路径的 URL,这时就会出现安装界面：

o 安装程序会检查所有的前提均已满足。您可以从上面的截图看到，此安装没有足够的权限来安装 webERP，因为网页服务器对于 webERP 路径无写入权限。 首先改变 webERP 安装路径的授权，以确保运行网页服务器的用户可以在网页空间中写入新的配置文件。Cpanel 和 Plesk 有进行这种改变的工具。任何在此界面显示红色字的信息均必须处理，才能继续安装。在红字依然出现的时候，不要试图继续运行安装程序。

o 所有这些要求填写的内容需要正确填写。然而，重要的是检查输入是正确的。此安装程序无法确定 mysql 服务器所处的主机(电脑),因此必须输入。也需要输入 mysql 数据库服务器的用户名和密码。

o 也需要输入 mysql 数据库服务器的用户名和密码。

o 在安装界面输入的公司名称会成为创建的 mysql 数据库名称。可能没有空格的公司缩写是一个理想输入。weberpdemo 是 weberpdemo 演示公司数据库的名称，并且这是一个测试 webERP 功能的好地方，但是您在生产环境中需要将这个变成您公司的名称。

o 选择安装演示数据库而非新的空数据库的方法是点击核取方框。

o 对于那些需要显示浏览器用户所在国家当地时间的企业而言，时区非常重要。例如，可以使用一个美国的网页服务器，而在法国运作业务。如果此项没有输入，网页 浏览器将显示网页服务器所在的时间（这个例子是美国），但是最好是显示企业运作的时区时间。可以选择任何 PHP 定义的时区。

o 在安装界面，可以选择在发票，会计报表，订单上面显示的 logo, 将它上传到网页服务器的适当位置。此 logo 需要是.jpg 文件并且大小小于 170px 乘以 80px.

o 最后，创建用户 admin, 此用户的密码需要在此定义。这里也可以指定您的电子邮件地址，它会保存在数据库里。（注：在 4.0 以前的密码是 webERP，而 4.0 版之后，密码为此处输入的密码）

点击 install webERP 按钮，这时会为公司创建数据库，用户 admin, 输入的密码等细节。如何从新安装的 webERP 开始配置新的公司，参考后续部分。

手动 webERP 安装

假设有 PHP 功能的网页服务器已经运作，一个 MySQL 数据库服务器也已经装在同一机器或者网路上，一个新的安装包括如下 5 个步骤：

l 将所有 PHP 脚本，包括文件复制到网页服务器文件的根目录。

l 创建数据库并且输入初始数据。

l 编辑 config.php 以提供数据库连接信息及其他要求。

l 第一次登入系统。

l 设定系统参数。

l 在系统里设定公司的特定信息。

复制 PHP 脚本

除了 INSTALL.txt 中的安装指示，web-erp-demo.sql 和 web-erp-new.sql 外，所有文件都需要复制到网页服务器的根目录。不同的发行版本会有不同，但是：

/srv/www/htdocs 是 apache 在 SuSE 版下的默认根目录。将压缩文件包复制到这个路径，然后解压缩。这时会产生一个 webERP 路径，所有脚本和其他目录都被复制到这个路径（/srv/www/htdocs/webERP）。

创建数据库

webERP 仅仅可以与 MySQL 或者 MariaDB 数据库服务器使用。

你需要知道 MySQL 服务器的用户名和密码。如果您没有指定，用户为 root, 默认的密码为空。你应该设立另外一个 MySQL 的用户来安装 MySQL 和改变根 root 用户的密码，而不是用预设的空密码。

所有使用 MySQL 的指示是指 MySQL 附属的命令行客户端。为了在 Windows 模式下运行，必须打开 DOS 窗口。在 XP 或者 2000，按开始，运行，输入”cmd”并且按确定。Mysql.exe 二进制码位于默认的路径 c:\mysql\bin\mysql.exe.需要时，下面讨论的选择可以添加。

摘自 MySQL 手册(编辑过):

MySQL 的根用户被创建成一个超级用户，可以做任何事情。必须从 localhost 链接。注：最初的根密码是空，所以任何人都可以链接作为根用户，不需任何密码而拥有所有权限。因为你初始安装是处于广泛的开放状态。所以第一件事情就是需要指定 MySQL 根用户的密码。你可以通过下面方法完成：（注意，你可以用 PASSWORD()函数指定密码）.

你可以，在 MySQL3.22 或以上版本，用 SETPASSWORD 命令：

shell>mysql–urootmysql（启动 MySQL）

mysql>SETPASSWORDFORroot=PASSWORD(‘newpassword’):”

这里”newpassword”是你为根 root 用户指定的新密码。

shell>mysql-urootmysqlmysql>SETPASSWORDFORroot=PASSWORD('new_password');"

同样来自 MySQL 手册(编辑过):同时，如果你已经变更了根用户 rootuser 的密码，你必须为下面的 mysql 命令指定(才能登录)。你可以通过使用 GRANT 命令增加新用户：

shell>mysql–usre=root–p’newpassword’mysql

mysql>GRANTALLPRIVILEGESON*.*TOweverp@localhostIDENTIFIEDBY‘some_pass’WITHGRANTOPTION;’注意，这里用户’weberp’只能从本地机器 localmachine 连接.如果网页服务器是和 MySQL 服务器位于不同的机器，你需要授权从不同机器上链接。参见 MySQL 手册。

这里‘some_pass’是你为新用户 weberp 选择的密码。

Innodb 表必须在 MySQL 中设置为可用。作为 ERP 软件的关键部分，这些表允许数据库的事务处理，Innodb 表需要在 my.cnf 中设定一些参数。在 MySQL 手册中，表的类型—Innodb 表中有一些例子。

如果你已经在 MySQL 中设定好了账户，并且 Innodb 表已经启用，你需要做的就是运行其中的一个脚本。

共两个脚本可用：

l Web-erp-demo.sql 设定设定了一个虚拟公司，有最小数量的演示数据，可以试着操作，以观察系统是如何运作的。

l Web-erp-new.sql:这个脚本仅设置一个新公司的基础数据。如果你想设立一个公司，使用 webERP 软件，你可以使用这个脚本。它创立了 webERP 的数据库，并且输入了最基本的初始化数据。

Web-erp-demo.sql 和 web-erp-new.sql 应该和所有的 PHP 脚本在同一目录。输入下列命令，根据实际情况填写脚本所在的路径或者用绝对路径：

shell>mysql--user=weberp--password='some_pass'</path_to_the_sql_script/web-erp-demo.sql

or

shell>mysql--user=weberp--password='some_pass'</path_to_the_sql_script/web-erp-new.sql

变更这里输入的用户’weberp’为你为使用 MySQL 而设的用户，变更为相关用户的密码。并且变更脚本放置的路径为适当的路径—可能如同这样：

/srv/www/htdocs/webERP/.

编辑 config.php

config.php 包含了一系列的用户定义的变量，以决定系统如何运作。关键的问题，是要包括主机 host（电脑名称）,为连接数据库服务器而需要的用户名，密码。也有一个选项供选择何种数据库服务器。目前，只有 mysql 和 postgres.没有这个数据是无法做下一步的工作的。

默认的 config.php 文件的内容如下。这个文件必须用字处理编辑器如 KATE,Wordpad 等编辑。然后，把 config.php 存到脚本所在的网络路径中。注意：系统在持续进化，可能在写这些之后已经有了很多变化。

公司所处的时区可以在这里指定，使用的语句类似：

Putenv (‘Australia/Sydney’);

这确保显示在浏览器中的企业的时区为系统的时区，而不管网页服务器位于何处（例如网页服务器的时区）。

================================

config.php 的开头

================================

<?php

/*$Revision:1.6$config.phpWeb-ERP-http://web-erp.sourceforge.net byLogicWorksLtd

·/

//Userconfigurablevariables//---------------------------------------------------

//用户配置的变量；

//登录画面和设定新用户的默认语言—用户语言选择会更改默认语言$DefaultLanguage=’en_GB’;

//在登陆画面是否显示 demo 登录和密码

$allow_deom_mode=True;

//webERPversionwebERP 版本

$Version='3.04';

//Thetimezoneofthebusiness-thisallowsthepossibilityofhaving

//theweb-serveronaoverseasmachinebutrecordlocaltime

//thisisnotnecessaryifyouhaveyourownserverlocally

//putenv('TZ=Europe/London');

//putenv('Australia/Melbourne');

//putenv('Australia/Sydney');

//putenv('TZ=Pacific/Auckland');

//业务的时区—这个设定使网页服务器位于海外但是记录本地时间成为可能。当

//然这不是必须的，如果你有自己的本地服务器。

Putenv（‘TZ=Europe/London’）;

//putenv(‘Australia/Melbourne’);

//putenv（’Australia/Sydney’）;

//putenv（’TZ=Pacific/Auckland’）;

//Connectioninformationforthedatabase

//$hostisthecomputeripaddressornamewherethedatabaseislocated

//assumingthatthewebserverisalsothesqlserver$host='localhost';

//数据库的连接信息

//$host 是是数据库存放的电脑的 ip 地址或者电脑名称。

//假设网页的服务器也是 sql 服务器$host=‘localhost’;

//Thetypeofdbserverbeingused-currentlyonlypostgresormysql$DBType='mysql';

//$DBType='postgres';

//$DBType='mysql';

数据库服务器的种类—目前只有 postgres 或者 mysql.$DBType=’mysql’;

//$DBType=’postgres’;

//$DBType=’mysql’;

//sqluser$password$DBUser=’weberp_db_user’;$DBPassword=’weberp_db_pwd’”

//sqluser&password$DBUser='weberp_db_user';$DBPassword='weberp_db_pwd';

在主机托管的环境下，允许选择公司或许是不合适的，因此可以选择关闭这个参数$AllowCompanySelectionBox=true;

//如果上面设定为$AllowCompanySelectionBox=true,$DefaultCompany 字符串被作为默认的登入画面—否则，用户需要知道要登入的公司名称。$DefaultCompany=’weberp’;

//在自动登出之前，登入会话可以处于闲置状态的最长时间设定，单位为秒。即是一个小时内允许的闲置时间。

$SessionLifeTime=3600;

脚本可以执行而不会被系统服务器终止的最大时间为

$MaximumExectuionTime=120;

//会话文件需要存放在服务器里面的路径—对于许多 mult-host 页面服务器而言

//这里可以留下。并且去掉注解符号“//”$SessionSavePath=’/tmp’；

//加密功能可以用

//$CryptFunction=”md5”;

//MD5Hash$CrptFunction=”sha1”;

//SHA1Hash//$CryptFunction=””;

//PlainText

//用户配置的变量结束

/*$RootPath 用在很多脚本里告诉文件的安装的细节。

注意：有时安装在 windows 时，这个命令不起作用。此时，系统管理员必须把这个路径进行手动设置：例如：如果文件在网页服务器的根路径，那么 rootpath=;如果是在 weberp 下面，那么 weberp 就是根路径-注意，不要多加/.

$RootPath=dirname(htmlspecialchars($_SERVER['PHP_SELF'],ENT_QUOTES,'UTF-8'));

if($RootPath=="/"OR$RootPath=="\\"){$RootPath="";}//$RootPath='/web-erp';

/*除了 E_NOTICE 外，报告所有错误，这个是 php.ini 的默认设置，但请确认在这里做了强制设置，打开通知基本的错误会导致破坏*/

error_reporting(E_ALL&~E_NOTICE);

/*请确保没有其他任何东西了，甚至在？>之外的一个空格*/?>

config.php 结束

================================

第一次登录

打开一个浏览器连接到网络上，网络上的网页服务器也同样连线。输入 URL,webERP 安装的路径。如果浏览器和网页服务器在同一台机器，可以是:

http://localhost/webERP/index.php

输入用户名‘demo’，输入密码’weberp’（注：4.0 开始密码为安装时输入的密码）

不需要引号。若要设定更多用户，到主菜单->设置->用户维护（MainMenu>Setup>UserAccounts）.通过点击显示在左上角的他们的用户名，用户可以在任何时候变更自己的密码。例如：“webERPDemo:administrator”.注意，直到新的系统管理员被设定，不要删除演示用户。如果没有定义用户，你下次登录时就没法登入！在这种情形下，唯一的办法是手动编辑 SQL 表 WWW_Users 增加一个用户，从而创建一个用户登入。如果网页服务器同时安装了 phpMyAdmin,这个任务可以通过增加一个新记录到 WWW_Users 来完成。

注意为根用户设定密码的重要性，否则的话任何人都可以更改 WWW_Users 并且盗取公司的信息。

增加新公司

到此为止，如果您依足了上述指示，那么您已经可以登录您在前面设置的单个公司（数据库）了。然而，您可能希望增加其他的更多公司。如果您的系统已经设置，网页服务器运作良好，您的网页服务器有写入 webERP 路径的权限，那么可以输入 URL：

http://yourdomain/webERP/Z_MakeNewCompany.php

此脚本允许您设置任何数量的公司—此时系统设置了新的数据库，同时还有系统要求的 webERP/companies 下的路径。

这个脚本可能不能运行，因为它要求网页服务器对于脚本路径的写入权限，如果是这样的话，您可能需要回到下列描写的手动方法：

上述的默认安装，让您创建了一个称为 weberp 的数据库，并且在路径 webERP/companies 下也有路径称为 weberp.要创建另一个公司，您需要复制此路径以及其下的所有路径到 webERP/companies/下的一个新路径。此路径的名称需要和您在同一 mysql 服务器上创建的数据库名称一致。

配置参数

在 3.0 版本之前，配置参数存放在 config.php 文件里面需要手动编辑系统参数。从 3.0 版开始，为系统参数开发了一个新页面允许配置系统范围内参数。这些数据存放在数据库里面，可以让我们更新而无须重新编辑 config.php 文件。系统参数页面在主菜单->设置->配置设置，所有的设定必须仔细审视。描述函数的备注就显示在参数旁边。

安装的其他信息可以到 webERP/doc/INSTALL.txt 里查找

皮肤和 GUI 变更

通常情况下，吸引一个人的东西未必引起另一个人的兴趣。尽管会记软件主要针对功能—但是外观也是很重要的！由于 GUI 使用了 css,颜色和字体存在选择的柔性。

用户界面可以通过已有的皮肤变更，也可制定一个新的皮肤.目前共定义了四种皮肤：‘silverwold’,’default’,’professional’和‘fresh’.

每个用户都可以从顾客设定屏幕选择他们自己的偏好。这个通过点击显示在屏幕左上角的用户名来显示。例如:”webERPDemo:administrato”.

要创建一个新的皮肤，复制已经定义的一个皮肤的路径。（皮肤路径在 css 路径下面）。编辑您复制的皮肤路径，比如说叫'New_theme',这个新的路径会自动显示在用户设置屏幕上，因此用户可以选择定制的皮肤。

设定用户

用用户名‘demo’登录后，应该定义一个有管理权限的新用户，用户‘demo’要删除。从菜单上点击‘设定’，然后点击“用户维护’.以有的用户就显示了出来。用户名必须是五个字符或者以上。密码也必须是五个字符或者以上。密码不可以是用户名或者是包含用户名。权限水平的选择是非常重要的，由于这些决定了用户可以登陆的页面。建议在职员之间将职能分开，这样可以使任何用户一个人都无法完成整个的交易.在企业里，有时这是不可行的。但是，系统有足够的灵活性让用户的权限被精确定义。见安全计划部分。

除了授权之外，也有一些其他的灵活性供用户选择。在‘用户账户’屏幕上，系统管理员可以定义主菜单上哪些模块是可用的，哪些模块是不可用的。

系统让顾客设定他们自己的登录界面。这些限定在他们可以查询他们的账户包括发票重新打印和输入新订单。顾客登入不允许价格变更。为达成此目的，登入权限必须设定为顾客登录，并且顾客登入界面的设定不能修改—例如只允许浏览$PageSecurity=1 的页面.另外，必须输入适用于登录的人顾客的编码和分部编码。

国际化和语言翻译

由于 webERP 3.12 版所有的翻译和用户界面使用 utf-8 字符编码。查看您浏览器的字符集使用（检视 à 语言及字符编码（火狐浏览器）），会显示 utf-8. 要使用非英语的其他语言，网页浏览器必须安装此语言的本地包，且使用 utf8 字符集。对于德语而言，这个可以是称为 de_DE.utf8 的语言包，很多语言包使用相似的命名惯例。例如 en_GB.utf8 代表英语—不列颠英语，且使用 utf-8 字符串。En_GB.utf8 是 webERP 默认的语言。
在 webERP 的主目录里，locale 路径里包含着需要翻译的语言指定数据。默认情况下，在 locale 路径下只有一个路径就是 en_GB.utf8, 这一默认的语言。在以 language_country.utf8 形式的路径下有个次级目录 LC_MESSAGES,它下面存放着 messages.po 文件。此文件包含 webERP 系统界面所有字符串的列表，以及翻译好的当地语言。要使用此翻译，这里的.po 文件需要编译成二进制格式以便快速查找，这个二进制文件即是 messages.mo;

webERP 通过 gettext 库里的函数来使用语言包下的文件来进行翻译。Gettext 库需要与网页服务器以及您所需要翻译的语言包一起安装。另外，网页服务器的 PHP 安装需要有 gettext 扩展，用来使用 gettext 库函数。将网页浏览器指向 http://yourdomain/webERP/phpinfo.php，会显示您网页服务器安装的 PHP 的细节，您可以从此页查看 gettext 扩展是否已经可用。
webERP 为所有的不同语言发布语言包，发布地点为 sourceforge – http://sourceforge.net/projects/web-erp/files/ 浏览您需要的语言并下载压缩档案。将此文件转移或者下载到在 webERP/local 路径下—然后解压缩。请确保此文件可以被网页服务器阅读（已经运行网页服务器的人有此权限）--这有可能导致需要改变语言文件的所有者或者权限。

对于指定的用户而言，如果要改变显示的语言—用户可以点击显示在屏幕左上方的自己的用户名。webERP 会显示此用户的设置。

webERP 查看 webERP/locale 下的所有路径，以确认安装了什么语言并且为用户提供了一个方便的方法来选择他们喜欢的语言。除了选择语言之外，也需要选择支持他们语言的 pdf 字体。

PDFs 使用 utf-8 字符集生成，他们每个字符有 4 个字节。不幸的是，PDF 中使用的 CID 字体只有两个字节，因此，要顺利支持的话，需要 CID 字符到 utf-8 字体的映射。在实际使用中，这意味着需要为 PDF 选择正确的语言。
如果您有兴趣为 webERP 贡献语言包—我们非常感激您这样做！您可以参考这个网页取得相关指引：http://www.weberp.org/HowToTranslate