295 lines
14 KiB
Plaintext
295 lines
14 KiB
Plaintext
Sybase-PHP-Apache mini-HOWTO
|
|
|
|
Tyson Lloyd Thwaites
|
|
|
|
tyson.lloydthwaites@ite.com.au
|
|
Revision History
|
|
Revision 1.3 2001-07-11 Revised by: TLT
|
|
Fixed example PHP script.
|
|
Revision 1.2 2001-06-13 Revised by: TLT
|
|
Shane Gelven pointed out an error in the init script paths.
|
|
Revision 1.1 2001-05-29 Revised by: TLT
|
|
Updated environment configuration section, changed HOWTO name.
|
|
|
|
|
|
This HOWTO explains how to set up a Linux machine to run an Apache web server
|
|
using PHP to access a Sybase-ASE database.
|
|
|
|
-----------------------------------------------------------------------------
|
|
Table of Contents
|
|
1. Copyright and License
|
|
2. Install Linux
|
|
3. Install Sybase
|
|
4. Configure Environment
|
|
4.1. Preconfigure Apache
|
|
|
|
|
|
5. Install PHP
|
|
6. Install Apache
|
|
7. Test the System
|
|
8. Post Install Tasks
|
|
|
|
1. Copyright and License
|
|
|
|
This document is copyright 2001 by Tyson Lloyd Thwaites, and is released
|
|
under the terms of the GNU Free Documentation License, which is hereby
|
|
incorporated by reference. Send feedback to tyson.lloydthwaites@ite.com.au.
|
|
-----------------------------------------------------------------------------
|
|
|
|
2. Install Linux
|
|
|
|
This howto assumes you have already installed a working Linux system. This
|
|
howto is based on a Redhat 6.2 system. I would appreciate any feedback on
|
|
setting this up on other distros.
|
|
|
|
The first thing you will have to do is uninstall the apache and mod_php rpms.
|
|
Try the following:
|
|
# rpm -e apache
|
|
# rpm -e httpd
|
|
# rpm -e mod_php
|
|
# rpm -e php
|
|
|
|
That should get rid of them. Just to be sure, run this:
|
|
# rpm -qa | less
|
|
|
|
and check that there is nothing to do with Apache or PHP left on you system.
|
|
-----------------------------------------------------------------------------
|
|
|
|
3. Install Sybase
|
|
|
|
Download the Sybase-ASE files from [http://linux.sybase.com]
|
|
linux.sybase.com. Sybase-ASE 11.0.3.3 is free for production. This howto
|
|
refers to that version.
|
|
|
|
First, install the Sybase RPMS as root:
|
|
# rpm -ivh sybase-ase-11_0_3_3-6_i386.rpm
|
|
# rpm -ivh sybase-doc-11_0_3_3-6_i386.rpm
|
|
# rpm -ivh sybase-ocsd-10_0_4-6_i386.rpm
|
|
|
|
For information on how to configure Sybase, read the instructions in the file
|
|
/opt/sybase/doc/howto/howto-ase-quickstart.html. This document is very good,
|
|
so we shouldn't need any more information here.
|
|
|
|
|
|
Hint: After you have installed the sample database and run a select
|
|
against it, you can stop following the instructions. The rest of the
|
|
howto goes on to uninstall the sample database, but we want to keep it
|
|
for testing later.
|
|
|
|
NOTE: Some people have reported problems with the way the Sybase init
|
|
scripts try to guess the Sybase directory. If you see the following
|
|
error:
|
|
export: sybase-ase-11.0.3.3: not a legal variable name
|
|
|
|
when trying to run sybinstall.sh, then you need to edit the
|
|
sybinstall.sh. Open the script and find the following lines (around line
|
|
104):
|
|
# export SYBASE=/opt/sybase
|
|
export SYBASE=`rpm -q --queryformat \
|
|
'%{installprefix}\n' sybase-ase-11.0.3.3`
|
|
|
|
Change these lines so they look like this:
|
|
export SYBASE=/opt/sybase
|
|
#export SYBASE=`rpm -q --queryformat \
|
|
# '%{installprefix}\n' sybase-ase-11.0.3.3`
|
|
|
|
This hardcodes the SYBASE path to /opt/sybase. If you did install Sybase
|
|
somewhere non-standard and you get this error, you will have to change
|
|
this path to point to your Sybase directory.
|
|
|
|
-----------------------------------------------------------------------------
|
|
4. Configure Environment
|
|
|
|
After installing Sybase, you need to setup the Linux environment in order to
|
|
allow clients to connect to the dataserver.
|
|
|
|
The first thing we need to do is to set certain environment variables in /etc
|
|
/profile. Open /etc/profile as super user and insert the following lines:
|
|
export SYBASE=/opt/sybase
|
|
export SYBPLATFORM=linux
|
|
export LD_LIBRARY_PATH=$SYBASE/lib
|
|
export LC_ALL=default
|
|
export PATH="$SYBASE/bin:$PATH"
|
|
export DSQUERY=SYBASE
|
|
|
|
Next you need to change to permissions of the Sybase directory. This fixes
|
|
some problems where PHP is unable to connect to the Sybase server. Run the
|
|
following command as super user:
|
|
chown -R sybase:sybase /opt/sybase
|
|
|
|
To test whether your Sybase environment works, type the following:
|
|
# su - nobody
|
|
$ isql -Usa -P
|
|
1> sp_helpdb
|
|
2> go
|
|
|
|
You should see a list of databases. To test whether you can use the sample
|
|
datebase, now type:
|
|
1> use pubs2
|
|
2> go
|
|
1> select * from titles
|
|
2> go
|
|
|
|
If you a list, you have sucessfully set up Sybase.
|
|
|
|
|
|
NOTE: You may need to do the following in order for PHP to be able to
|
|
access Sybase. Edit the file /opt/sybase/install/rc.sybase and remove the
|
|
line that says:
|
|
unset LANG; unset LC_ALL; \
|
|
|
|
I don't know why that line is there, but it can stuff things up.
|
|
|
|
NOTE: Some people have reported problems with the way the Sybase init
|
|
scripts try to guess the Sybase directory. If you see the following
|
|
error:
|
|
errorerwerqwerqwerwerwer
|
|
|
|
when trying to run sybinstall.sh or rc.sybase, then you need to change
|
|
|
|
You may also want to add sybase to the list of services to run at boot time.
|
|
To do this execute the following commands:
|
|
# ln -s /opt/sybase/install/rc.sybase /etc/rc.d/init.d/sybase
|
|
# ln -s /etc/rc.d/init.d/sybase /etc/rc.d/rc3.d/S15sybase
|
|
# ln -s /etc/rc.d/init.d/sybase /etc/rc.d/rc3.d/K15sybase
|
|
|
|
Now Sybase will start whenever you boot into runlevel 3.
|
|
|
|
|
|
NOTE: The note for
|
|
|
|
-----------------------------------------------------------------------------
|
|
4.1. Preconfigure Apache
|
|
|
|
Download and unpack the latest Apache distribution. In the Apache directory
|
|
issue the following command:
|
|
# ./configure --prefix=/usr/local/apache
|
|
|
|
I think the 'prefix' value specifies where you want to store your html files;
|
|
I just set it to the same as the apache install directory, where Apache will
|
|
put its files when you run 'make install'.
|
|
-----------------------------------------------------------------------------
|
|
|
|
5. Install PHP
|
|
|
|
Download the latest PHP distribution and unpack it.
|
|
|
|
Change to the php directory and run the configure script. You need to pass
|
|
certains options to the script. To enable PHP access Sybase, you need
|
|
--with-sybase-ct. You will also need to specify the web server interface to
|
|
use; in our case, this is Apache, so we use --with-apache To build a CGI
|
|
version of PHP, (which is also very useful as a shell scripting tool), just
|
|
leave out the --with-apache.
|
|
|
|
Here is a complete configure script with the above two options, as well as a
|
|
number of other options that are useful.
|
|
# ./configure --with-apache=../apache_1.3.19
|
|
--with-sybase-ct=/opt/sybase --enable-bcmath --enable-calendar
|
|
--enable-ctype --enable-exif --enable-ftp --enable-gd-imgstrttf
|
|
--with-gd --enable-trans-sid --enable-shmop --enable-sockets
|
|
--enable-sysvsem --enable-sysvshm --enable-wddx
|
|
|
|
You will need to change to apache path to wherever you unpacked your apache
|
|
distribution.
|
|
|
|
If the configure scripts completes successfully, you can then proceed:
|
|
# make && make install
|
|
|
|
PHP should compile without any hitches. After it has installed, you need to
|
|
install the php.ini file:
|
|
# cp php.ini-optimized /usr/local/lib/php.ini
|
|
|
|
Now we need to change a few things in /usr/local/lib/php.ini. Set the
|
|
following parameters to the ones specified below:
|
|
magic_quotes_sybase = on
|
|
sybct.min_server_severity = 11
|
|
sybct.min_client_severity = 11
|
|
|
|
I also like to set the following:
|
|
register_globals = on
|
|
include_path=.:/usr/local/lib/php
|
|
|
|
You have now completed the PHP installation.
|
|
-----------------------------------------------------------------------------
|
|
|
|
6. Install Apache
|
|
|
|
Now cd back into the apache unpack directory. Issue the following commmands:
|
|
# ./configure --activate-module=src/modules/php4/libphp4.a
|
|
# make && make install
|
|
|
|
This should proceed without any problems. When its done, edit the file /usr/
|
|
local/apache/conf/httpd.conf and uncomment the following line:
|
|
AddType application/x-httpd-php .php
|
|
|
|
This tells apache to allow PHP to process files with a .php extension. You
|
|
may also want to add some other extensions to the end of this line, eg:
|
|
AddType application/x-httpd-php .php .php3 .html .htm
|
|
|
|
You now have all the software you need and are ready to test your system.
|
|
-----------------------------------------------------------------------------
|
|
|
|
7. Test the System
|
|
|
|
First, make sure Apache and Sybase are started:
|
|
# /usr/local/apache/bin/apachectl start
|
|
# /opt/sybase/install/rc.sybase start
|
|
|
|
Now go to the directory /usr/local/apache/htdocs. Create a file called
|
|
test.php and insert the following contents:
|
|
<?php
|
|
$con = sybase_connect("SYBASE", "sa", "");
|
|
sybase_select_db("pubs2");
|
|
$qry = sybase_query("select * from titles", $con);
|
|
|
|
echo sybase_result($qry, 1, 1);
|
|
|
|
sybase_close($con);
|
|
?>
|
|
|
|
Save the file and then access the following URL in your browser:
|
|
http://localhost/test.php
|
|
|
|
If you see some text, then congratulations! You have a complete Linux/Apache/
|
|
PHP/Sybase-ASE installation. If not...well, there you go. Make sure you
|
|
actually have installed the pubs2 database. If you are not sure, try running:
|
|
# isql -Usa -P < /opt/sybase/scripts/installpubs2
|
|
|
|
[mailto:tyson.lloydthwaites@ite.com.au] Email me if you have any problems,
|
|
corrections (please!) or additions, but please do not email me unless you
|
|
have tried everything in this howto! Thanks.
|
|
-----------------------------------------------------------------------------
|
|
|
|
8. Post Install Tasks
|
|
|
|
After you have a working system, first of all, breath a deep sigh of
|
|
satisfaction. (I also suggest eating something.) After this, there are a few
|
|
post-install tasks you should perform.
|
|
|
|
The FIRST thing you should do is change the password for the 'sa' user. By
|
|
default this password is blank. To set a password for sa, type the following
|
|
in isql:
|
|
1> sp_password null, 'new_pass123', 'sa'
|
|
2> go
|
|
|
|
This will set the password. You will now need to pass this as a parameter to
|
|
sybase_connect. You will also need to specify it when starting isql, which
|
|
you can do by using the '-P' switch.
|
|
|
|
|
|
NOTE: Once you have ste a password, you cannot unset it. (Sybase requires
|
|
a minumum of six characters in a password, so '' won't be accepted.)
|
|
|
|
You also may wish to install the Windows client tools. These can be found on
|
|
a CD if you bought a cope of ASE from Sybase. Otherwise, if you are using the
|
|
free 11.0.3.3 version, you can download a demo of ASE 12.0 for NT, and only
|
|
install the 'ASE Plugin for Sybase Central', 'ASE ODBC Driver' and 'Sybase
|
|
Central' components.
|
|
|
|
|
|
: I am not sure of the licensing issues involved in using the client
|
|
tools if you haven't purchased ASE. Although I don't think it would be a
|
|
problem, you should contact Sybase directly if you want to be sure.
|
|
|
|
I am open to more hints to put in this section.
|