I have been using PHP for a while now and I simply love it ! Its versatile and easy to use nature makes it attractive for new application. When I say PHP, people think it as a non robust , non scalable application service. In actuality, its the other way around, its very robust, feature rich and very scalable. It can run on native Apache, IBM HTTP Server (IBM’s version of apache), IIS, Tomcat and many other flavors out there. Until a few days ago, I have been using PHP with its long time love – MySQL. PHP and MySQL integrates very easily, but there is no reason why PHP will not work with any other type of database. Few months ago, I decided to do a project using PHP and DB2. And to my surprise, setting up PHP to use DB2 was as easy as setting it up against MySQL, after all database is just a database and database drivers are just database drivers.
I am sure everybody knows how to setup PHP with MySQL and there are hundreds of document out there to explain it, but I didn’t find a whole lot for DB2, so guess what I decided to put one together.
Components required :
1. Apache Server
2. PHP
3. Zend development
4. DB2 V9.5 express c edition (free). You can use any edition of DB2 as long as you have a license for it.
If you are too lazy to download each of them (Apache/ PHP/ Zend) and configure you can use WAMP . I used WAMP module from Bitnami, which is Apache, MySQL and PHP that runs on Windows. It also includes the Zend module as part of it.
Here is what I did :
1. Download WAMP from Bitnami
2. Download DB2 V9.5 Express – C Edition
Once I downloaded all of them. I installed Bitnami under the C:\Bitnami directory. I kept the directory structure simple, so its easy to use the command line and easy if I had to type the path of the installation in configuration files. Its pretty straight forward to install Bitnami. When you install Bitnami, it will prompt for a password, this is the password for the MySql server. Type in a password that you will remember. You would need this to configure MySql server or connect to it using tools. If you have firewall software installed, it might prompt you few time asking for permission. Hit Allow / Unblock to let the installer do its thing.
Now lets install the DB2. Unzip the downloaded file. Then select db2setup to start the db2 install. Choose typical install to make it easy, unless you like to go thru custom install and pick and choose what you want. DB2 install is very straight forward. Just for information the default instance name is DB2 and the port DB2 will listen is 50000. If you choose custom install , the installer will give you an option to change it or you can change it after you install. Refer to DB2 administration guide for details.
Now the last step, setting up the PHP extension to use the db2 drivers. Unzip the PECL file you downloaded. Copy the php_ibm_db2.dll and php_pdo_odbc file to C:\Bitnami\PHP\ext\ Now edit the C:\Bitnami\PHP\php.ini file and add the following entries:
extension_dir = “C:/BitNami/php/ext”
extension=php_ibm_db2.dll
extension=php_pdo.dll
entension=php_pdo_odbc.dll
Once you have done all that, its time to recycle apache server and restart db2. Its not required to restart db2, but it wouldn’t hurt at this time. Now you are ready to code php application that access DB2. Here is a sample application that I wrote that you can use to test. You may have to modify the database name, hostname, username and password.
Now instead of Bitnami, you can also use the Zend core V2.5 to use php on DB2.
I am using a RAD tool, CodeCharge Studio to create PHP. I have a iSeries 270 running IBM’s OS V5R4. I have a connection problem:
Warning: odbc_exec() [function.odbc-exec]: SQL error: [IBM][iSeries Access ODBC Driver][DB2 UDB]SQL0204 – USERS in QGPL type *FILE not found., SQL state S0002 in SQLExecDirect in C:\Inetpub\wwwroot\DocProc\db_odbc.php on line 93
I know the USERS in QGPL exist. I ran from my Windows XP Pro a SQL statement using WinSQL Version: 7.5.88.602 Edition: Lite: select * from QGPL/USER
and it gives me the result:
USRI PSWD UNNO CNAM
JMARTIN correct 1 James R. Martin
I even tried to hard code user and password by going into C:\Inetpub\wwwroot\DocProc\db_odbc.php and entered:
<?php
//DB ODBC Class @0-7473E93E
/*
* Database Management for PHP
*
* Copyright (c) 1998-2000 Cameron Taggart (cameront@wolfenet.com)
* Modified by Guarneri carmelo (carmelo@melting-soft.com)
* Modified by Vitaliy Radchuk (vitaliy.radchuk@yessoftware.com)
*
* db_odbc.php
*/
class DB_ODBC {
var $DBHost = "";
var $DBDatabase = "";
var $DBUser = "JMARTIN";
var $DBPassword = "CORRRECT";
var $UseODBCCursor = 0;
var $Options = array();
var $Persistent = false;
var $Uppercase = false;
but Still get the same error.
when I run:
http://localhost/phpinfo.php
I get all the PHP Info:
PHP Version 5.2.5
System Windows NT JMARTIN 5.1 build 2600
Build Date Nov 8 2007 23:18:08
Configure Command cscript /nologo configure.js "–enable-snapshot-build" "–with-gd=shared"
Server API Apache 2.0 Handler
Virtual Directory Support enabled
Configuration File (php.ini) Path C:\WINDOWS
Loaded Configuration File C:\PHP\php.ini
PHP API 20041225
PHP Extension 20060613
Zend Extension 220060519
Debug Build no
Thread Safety enabled
Zend Memory Manager enabled
IPv6 Support enabled
Registered PHP Streams php, file, data, http, ftp, compress.zlib
Registered Stream Socket Transports tcp, udp
Registered Stream Filters convert.iconv.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, zlib.*
This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
——————————————————————————–
PHP Credits
——————————————————————————–
Configuration
PHP Core
Directive Local Value Master Value
allow_call_time_pass_reference Off Off
allow_url_fopen On On
allow_url_include Off Off
always_populate_raw_post_data Off Off
arg_separator.input & &
arg_separator.output & &
asp_tags Off Off
auto_append_file no value no value
auto_globals_jit On On
auto_prepend_file no value no value
browscap no value no value
default_charset no value no value
default_mimetype text/html text/html
define_syslog_variables Off Off
disable_classes no value no value
disable_functions no value no value
display_errors On On
display_startup_errors Off Off
doc_root C:/Inetpub/wwwroot C:/Inetpub/wwwroot
docref_ext no value no value
docref_root no value no value
enable_dl On On
error_append_string no value no value
error_log no value no value
error_prepend_string no value no value
error_reporting 6143 6143
expose_php On On
extension_dir C:\PHP\ext C:\PHP\ext
file_uploads On On
highlight.bg #FFFFFF #FFFFFF
highlight.comment #FF8000 #FF8000
highlight.default #0000BB #0000BB
highlight.html #000000 #000000
highlight.keyword #007700 #007700
highlight.string #DD0000 #DD0000
html_errors On On
ignore_repeated_errors Off Off
ignore_repeated_source Off Off
ignore_user_abort Off Off
implicit_flush Off Off
include_path .;C:\php5\pear .;C:\php5\pear
log_errors On On
log_errors_max_len 1024 1024
magic_quotes_gpc Off Off
magic_quotes_runtime Off Off
magic_quotes_sybase Off Off
mail.force_extra_parameters no value no value
max_execution_time 30 30
max_input_nesting_level 64 64
max_input_time 60 60
memory_limit 128M 128M
open_basedir no value no value
output_buffering 4096 4096
output_handler no value no value
post_max_size 150M 150M
precision 14 14
realpath_cache_size 16K 16K
realpath_cache_ttl 120 120
register_argc_argv Off Off
register_globals Off Off
register_long_arrays Off Off
report_memleaks On On
report_zend_debug On On
safe_mode Off Off
safe_mode_exec_dir no value no value
safe_mode_gid Off Off
safe_mode_include_dir no value no value
sendmail_from no value no value
sendmail_path no value no value
serialize_precision 100 100
short_open_tag Off Off
SMTP localhost localhost
smtp_port 25 25
sql.safe_mode Off Off
track_errors Off Off
unserialize_callback_func no value no value
upload_max_filesize 150M 150M
upload_tmp_dir no value no value
user_dir no value no value
variables_order GPCS GPCS
xmlrpc_error_number 0 0
xmlrpc_errors Off Off
y2k_compliance On On
zend.ze1_compatibility_mode Off Off
apache2handler
Apache Version Apache/2.2.4 (Win32) PHP/5.2.5
Apache API Version 20051115
Server Administrator jmartin@jmartinassociates.net
Hostname:Port jmartin.jmartinassociates.net:80
Max Requests Per Child: 0 – Keep Alive: on – Max Per Connection: 100
Timeouts Connection: 300 – Keep-Alive: 5
Virtual Server No
Server Root C:/Program Files/Apache Software Foundation/Apache2.2
Loaded Modules core mod_win32 mpm_winnt http_core mod_so mod_actions mod_alias mod_asis mod_auth_basic mod_authn_default mod_authn_file mod_authz_default mod_authz_groupfile mod_authz_host mod_authz_user mod_autoindex mod_cgi mod_dir mod_env mod_imagemap mod_include mod_isapi mod_log_config mod_mime mod_negotiation mod_setenvif mod_userdir mod_php5
Directive Local Value Master Value
engine 1 1
last_modified 0 0
xbithack 0 0
Apache Environment
Variable Value
HTTP_ACCEPT image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*
HTTP_ACCEPT_LANGUAGE en-us
HTTP_UA_CPU x86
HTTP_ACCEPT_ENCODING gzip, deflate
HTTP_USER_AGENT Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
HTTP_HOST localhost
HTTP_CONNECTION Keep-Alive
PATH C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\system32\WBEM;C:\ibmdebug\bin;C:\WDSC;C:\Program Files\Microsoft SQL Server\80\Tools\Binn\;C:\PROGRA~1\IBM\CLIENT~1;C:\PROGRA~1\IBM\CLIENT~1\Shared;C:\PROGRA~1\IBM\CLIENT~1\Emulator;C:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\PHP;C:\Program Files\QuickTime\QTSystem\;C:\Program Files\Common Files\HP\Digital Imaging\\bin;C:\Program Files\MySQL\MySQL Server 5.0\bin;C:\Program Files\IBM\Client Access\Shared;
SystemRoot C:\WINDOWS
COMSPEC C:\WINDOWS\system32\cmd.exe
PATHEXT .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
WINDIR C:\WINDOWS
SERVER_SIGNATURE no value
SERVER_SOFTWARE Apache/2.2.4 (Win32) PHP/5.2.5
SERVER_NAME localhost
SERVER_ADDR 127.0.0.1
SERVER_PORT 80
REMOTE_ADDR 127.0.0.1
DOCUMENT_ROOT C:/Inetpub/wwwroot
SERVER_ADMIN jmartin@jmartinassociates.net
SCRIPT_FILENAME C:/Inetpub/wwwroot/phpinfo.php
REMOTE_PORT 4979
GATEWAY_INTERFACE CGI/1.1
SERVER_PROTOCOL HTTP/1.1
REQUEST_METHOD GET
QUERY_STRING no value
REQUEST_URI /phpinfo.php
SCRIPT_NAME /phpinfo.php
HTTP Headers Information
HTTP Request Headers
HTTP Request GET /phpinfo.php HTTP/1.1
Accept image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*
Accept-Language en-us
UA-CPU x86
Accept-Encoding gzip, deflate
User-Agent Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
Host localhost
Connection Keep-Alive
HTTP Response Headers
X-Powered-By PHP/5.2.5
Keep-Alive timeout=5, max=100
Connection Keep-Alive
Transfer-Encoding chunked
Content-Type text/html
bcmath
BCMath support enabled
calendar
Calendar support enabled
com_dotnet
COM support enabled
DCOM support disabled
.Net support enabled
Directive Local Value Master Value
com.allow_dcom 0 0
com.autoregister_casesensitive 1 1
com.autoregister_typelib 0 0
com.autoregister_verbose 0 0
com.code_page no value no value
com.typelib_file no value no value
ctype
ctype functions enabled
date
date/time support enabled
"Olson" Timezone Database Version 2007.9
Timezone Database internal
Default timezone America/Chicago
Directive Local Value Master Value
date.default_latitude 31.7667 31.7667
date.default_longitude 35.2333 35.2333
date.sunrise_zenith 90.583333 90.583333
date.sunset_zenith 90.583333 90.583333
date.timezone no value no value
dom
DOM/XML enabled
DOM/XML API Version 20031129
libxml Version 2.6.26
HTML Support enabled
XPath Support enabled
XPointer Support enabled
Schema Support enabled
RelaxNG Support enabled
filter
Input Validation and Filtering enabled
Revision $Revision: 1.52.2.39 $
Directive Local Value Master Value
filter.default unsafe_raw unsafe_raw
filter.default_flags no value no value
ftp
FTP support enabled
hash
hash support enabled
Hashing Engines md2 md4 md5 sha1 sha256 sha384 sha512 ripemd128 ripemd160 ripemd256 ripemd320 whirlpool tiger128,3 tiger160,3 tiger192,3 tiger128,4 tiger160,4 tiger192,4 snefru gost adler32 crc32 crc32b haval128,3 haval160,3 haval192,3 haval224,3 haval256,3 haval128,4 haval160,4 haval192,4 haval224,4 haval256,4 haval128,5 haval160,5 haval192,5 haval224,5 haval256,5
iconv
iconv support enabled
iconv implementation "libiconv"
iconv library version 1.9
Directive Local Value Master Value
iconv.input_encoding ISO-8859-1 ISO-8859-1
iconv.internal_encoding ISO-8859-1 ISO-8859-1
iconv.output_encoding ISO-8859-1 ISO-8859-1
json
json support enabled
json version 1.2.1
libxml
libXML support active
libXML Version 2.6.26
libXML streams enabled
msql
MSQL Support enabled
Allow Persistent Links yes
Persistent Links 0/unlimited
Total Links 0/unlimited
odbc
ODBC Support enabled
Active Persistent Links 1
Active Links 1
ODBC library Win32
Directive Local Value Master Value
odbc.allow_persistent On On
odbc.check_persistent On On
odbc.default_db no value no value
odbc.default_pw no value no value
odbc.default_user no value no value
odbc.defaultbinmode return as is return as is
odbc.defaultlrl return up to 4096 bytes return up to 4096 bytes
odbc.max_links Unlimited Unlimited
odbc.max_persistent Unlimited Unlimited
pcre
PCRE (Perl Compatible Regular Expressions) Support enabled
PCRE Library Version 7.3 2007-08-28
Directive Local Value Master Value
pcre.backtrack_limit 100000 100000
pcre.recursion_limit 100000 100000
Reflection
Reflection enabled
Version $Id: php_reflection.c,v 1.164.2.33.2.47 2007/10/28 13:47:14 iliaa Exp $
session
Session Support enabled
Registered save handlers files user
Registered serializer handlers php php_binary wddx
Directive Local Value Master Value
session.auto_start Off Off
session.bug_compat_42 Off Off
session.bug_compat_warn On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_httponly Off Off
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 0 0
session.gc_divisor 1000 1000
session.gc_maxlifetime 1440 1440
session.gc_probability 1 1
session.hash_bits_per_character 5 5
session.hash_function 0 0
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path no value no value
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid 0 0
SimpleXML
Simplexml support enabled
Revision $Revision: 1.151.2.22.2.35 $
Schema support enabled
SPL
SPL support enabled
Interfaces Countable, OuterIterator, RecursiveIterator, SeekableIterator, SplObserver, SplSubject
Classes AppendIterator, ArrayIterator, ArrayObject, BadFunctionCallException, BadMethodCallException, CachingIterator, DirectoryIterator, DomainException, EmptyIterator, FilterIterator, InfiniteIterator, InvalidArgumentException, IteratorIterator, LengthException, LimitIterator, LogicException, NoRewindIterator, OutOfBoundsException, OutOfRangeException, OverflowException, ParentIterator, RangeException, RecursiveArrayIterator, RecursiveCachingIterator, RecursiveDirectoryIterator, RecursiveFilterIterator, RecursiveIteratorIterator, RecursiveRegexIterator, RegexIterator, RuntimeException, SimpleXMLIterator, SplFileInfo, SplFileObject, SplObjectStorage, SplTempFileObject, UnderflowException, UnexpectedValueException
standard
Regex Library Bundled library enabled
Dynamic Library Support enabled
Internal Sendmail Support for Windows enabled
Directive Local Value Master Value
assert.active 1 1
assert.bail 0 0
assert.callback no value no value
assert.quiet_eval 0 0
assert.warning 1 1
auto_detect_line_endings 0 0
default_socket_timeout 60 60
safe_mode_allowed_env_vars PHP_ PHP_
safe_mode_protected_env_vars LD_LIBRARY_PATH LD_LIBRARY_PATH
url_rewriter.tags a=href,area=href,frame=src,input=src,form=fakeentry a=href,area=href,frame=src,input=src,form=fakeentry
user_agent no value no value
tokenizer
Tokenizer Support enabled
wddx
WDDX Support enabled
WDDX Session Serializer enabled
xml
XML Support active
XML Namespace Support active
libxml2 Version 2.6.26
xmlreader
XMLReader enabled
xmlwriter
XMLWriter enabled
zlib
ZLib Support enabled
Stream Wrapper support compress.zlib://
Stream Filter support zlib.inflate, zlib.deflate
Compiled Version 1.2.3
Linked Version 1.2.3
Directive Local Value Master Value
zlib.output_compression Off Off
zlib.output_compression_level -1 -1
zlib.output_handler no value no value
Additional Modules
Module Name
Environment
Variable Value
ALLUSERSPROFILE C:\Documents and Settings\All Users
CLASSPATH .;C:\WDSC\JAVA;C:\Program Files\Java\jre1.5.0_11\lib\ext\QTJava.zip
CODETMPDIR C:\WDSC\TMP
COLLECTIONID COL6400
CommonProgramFiles C:\Program Files\Common Files
COMPUTERNAME JMARTIN
ComSpec C:\WINDOWS\system32\cmd.exe
DER_DRIVER_PATH C:\ibmdebug
FP_NO_HOST_CHECK NO
HELP C:\WDSC\HELP
HMSERVER https://vausnzisprob.austin.hp.com/wuss/servlet/WUSSServlet
IPF_PATH32 C:\WDSC\SYSTEM
ITEMID ps-19683-3
LANG 1033
LOCPATH C:\ibmdebug\LOCALE;C:\WDSC\SYSTEM
NLSPATH C:\ibmdebug\msg\%%L\%%N;
NUMBER_OF_PROCESSORS 1
OS Windows_NT
OSVER winXPP
Path C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\system32\WBEM;C:\ibmdebug\bin;C:\WDSC;C:\Program Files\Microsoft SQL Server\80\Tools\Binn\;C:\PROGRA~1\IBM\CLIENT~1;C:\PROGRA~1\IBM\CLIENT~1\Shared;C:\PROGRA~1\IBM\CLIENT~1\Emulator;C:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\PHP;C:\Program Files\QuickTime\QTSystem\;C:\Program Files\Common Files\HP\Digital Imaging\\bin;C:\Program Files\MySQL\MySQL Server 5.0\bin;C:\Program Files\IBM\Client Access\Shared;
PATHEXT .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
PROCESSOR_ARCHITECTURE x86
PROCESSOR_IDENTIFIER x86 Family 6 Model 13 Stepping 6, GenuineIntel
PROCESSOR_LEVEL 6
PROCESSOR_REVISION 0d06
ProgramFiles C:\Program Files
QTJAVA C:\Program Files\Java\jre1.5.0_11\lib\ext\QTJava.zip
SESSIONID 1197479605972g1u0355c.austin.hp.com-4439d774:116d76c32c7:5710
SWUTVER 1.0.22.20030804
SystemDrive C:
SystemRoot C:\WINDOWS
TEMP C:\WINDOWS\TEMP
TIMEOUT 0
TMP C:\WINDOWS\TEMP
TOOLPATH /C:\Program%20Files\HP\HP%20Software%20Update\install.htm
USERPROFILE C:\Documents and Settings\LocalService
VERSION 3.5.0
windir C:\WINDOWS
AP_PARENT_PID 7332
PHP Variables
Variable Value
_SERVER["HTTP_ACCEPT"] image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*
_SERVER["HTTP_ACCEPT_LANGUAGE"] en-us
_SERVER["HTTP_UA_CPU"] x86
_SERVER["HTTP_ACCEPT_ENCODING"] gzip, deflate
_SERVER["HTTP_USER_AGENT"] Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
_SERVER["HTTP_HOST"] localhost
_SERVER["HTTP_CONNECTION"] Keep-Alive
_SERVER["PATH"] C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\system32\WBEM;C:\ibmdebug\bin;C:\WDSC;C:\Program Files\Microsoft SQL Server\80\Tools\Binn\;C:\PROGRA~1\IBM\CLIENT~1;C:\PROGRA~1\IBM\CLIENT~1\Shared;C:\PROGRA~1\IBM\CLIENT~1\Emulator;C:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\PHP;C:\Program Files\QuickTime\QTSystem\;C:\Program Files\Common Files\HP\Digital Imaging\\bin;C:\Program Files\MySQL\MySQL Server 5.0\bin;C:\Program Files\IBM\Client Access\Shared;
_SERVER["SystemRoot"] C:\WINDOWS
_SERVER["COMSPEC"] C:\WINDOWS\system32\cmd.exe
_SERVER["PATHEXT"] .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
_SERVER["WINDIR"] C:\WINDOWS
_SERVER["SERVER_SIGNATURE"] no value
_SERVER["SERVER_SOFTWARE"] Apache/2.2.4 (Win32) PHP/5.2.5
_SERVER["SERVER_NAME"] localhost
_SERVER["SERVER_ADDR"] 127.0.0.1
_SERVER["SERVER_PORT"] 80
_SERVER["REMOTE_ADDR"] 127.0.0.1
_SERVER["DOCUMENT_ROOT"] C:/Inetpub/wwwroot
_SERVER["SERVER_ADMIN"] jmartin@jmartinassociates.net
_SERVER["SCRIPT_FILENAME"] C:/Inetpub/wwwroot/phpinfo.php
_SERVER["REMOTE_PORT"] 4979
_SERVER["GATEWAY_INTERFACE"] CGI/1.1
_SERVER["SERVER_PROTOCOL"] HTTP/1.1
_SERVER["REQUEST_METHOD"] GET
_SERVER["QUERY_STRING"] no value
_SERVER["REQUEST_URI"] /phpinfo.php
_SERVER["SCRIPT_NAME"] /phpinfo.php
_SERVER["PHP_SELF"] /phpinfo.php
_SERVER["REQUEST_TIME"] 1251734680
PHP License
This program is free software; you can redistribute it and/or modify it under the terms of the PHP License as published by the PHP Group and included in the distribution in the file: LICENSE
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
If you did not receive a copy of the PHP license, or have any questions about PHP licensing, please contact license@php.net.
Thanks for this post. Farmville is just awesome