Author: Exson Qu

初识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