|
Sybase Functions
To enable Sybase-DB support configure PHP
The behaviour of these functions is affected by settings in Table 317. Sybase configuration options
Here's a short explanation of the configuration directives.
Table 318. Sybase-CT configuration options
Here's a short explanation of the configuration directives.
For further details and definitions of the
PHP_INI_* constants, see the Appendix I, Table of Contents
Code Examples / Notes » ref.sybasejon dot bertsch
Up to php 5.0.4 you cannot install both sybase and mssql (they use the same function names). It turns out though that if you use the Freetds library you can connect to sybase using the mssql functions (and visa versa I assume). Setup your servers in the freetds.conf file (for sybase use specify version 5.0, for mssql 7 or 8.0) and call the database connection as you would with mssql (mssql_conect). You should be able to connect either sql server or sybase. I don't know if all sybase functions will work as expected but basic querying is succesful. Hope this helps someone.
xtof
To store an image file into Sybase try this : $data = bin2hex(fread(fopen($image,"r"), filesize($image))); //don't forget the 0x before the hex data. if(! sybase_query("INSERT INTO test_image (image) VALUES (0x".$data.")")) die ("Unable to store the image."); To retrieve it just do a select and use a hex2bin function (this one has been submitted by carl@five-ten-sg.com and is the fastest) : function hex2bin($data) { $len = strlen($data); return pack("H" . $len, $data); } PS : use CT-lib rather than DB-lib (Sybase doesn't work on it anymore!) heumann
This should make the image/blob subject rather complete: PHP 3 seems to have a bug with image columns in sybase. Apache gets a segmentation fault when trying to retrieve an image column with more than a certain amount of characters (even when using set textsize). The work around is to use text columns instead. They have the same capacity, only you need to convert the data to ASCII (e.g. Hex, see examples in earlier contributions, bin2hex). Remember to put the data in quotes, too, when INSERTing. info
This is way to compile Sybase ASE 12.5 with PHP5.0.0 and Apache 2 on Linux: - install apache - install ase1252_de_linux.tgz to /opt/sybase-12.5 - shell:# ln -s /opt/sybase-12.5 /opt/sybase - edit phpsrc/configure and remove all '-linsck' - edit phpsrc/ext/sybase-ct/php_sybase_ct.h and change CTLIB_VERSION CS_VERSION_100 to 125 - shell:# export SYBASE=/opt/sybase - phpsrc/configure --with-sybase-ct=/opt/sybase/OCS-12_5 - phpsrc/make and make install - edit apache2/conf/httpd.conf and add AddType... .php - create /opt/sybase/interfaces file SERVERNAME [tab!]master tcp ether ipAddress port [tab!]query tcp ether ipAddress port - apache2/bin/apachectl start I hope, that I save your time. 1rsv_sign_mail.ru stas_aka_rsv
There is a way how to force php work with both php_mssql.dll and php_sybase_ct.dll. Just open php_sybase_ct.dll in any editor (dont use MS WORD :0) ) and replace all "mssql_" on something like that "masql_". After that there will not be warnings about double function definitions and php can use php_sybase_ct.dll to access to sybase and php_mssql.dll to access to mssql. The reason why I did such thing is that I couldnt connect to mssql using php_sybase_ct.dll. anatolykoval
The way to use Sybase Adaptive Server Anywhere+PHP+Apache on Unix http://www.sybase.com/detail?id=1019695
mad
The best place to get Sybase for Debian : http://www.dactar.ch/sybase tcurdt
Poor documentation on sybase support!! Here's how I made it work... First get the linux ASE from sybase (maybe the ctlibs provided at php.net will do fine, too) Install the ASE rpm. (some distributions don't have system libs etc in the rpm database so you might get some dependency errors. If your systems fits the requirements install with "ignore dependencies") Recompile php with option --with-sybase-ct=/dirtoyoursybasehome. Then you need to set the env variable for (at least)your apache user by export SYBASE=/dirtoyoursybasehome. Now you need to set up your servers (like DSNs for ODBC). Edit the file $SYBASE/interfaces and add your server entries: SERVERNAME query tcp ether 172.16.1.4 4100 master tcp ether 172.16.1.4 4100 (change IP/FQHN and port to your setup) Now you can check your config by using $SYBASE/bin/isql -S SERVERNAME -U DBUSER -P PASSWD If you get a prompt you have connected to your sybase! Hurray! Now you can try with php $db=sybase_connect("SERVERNAME","DBUSER","DBPASSWD"); And... Voila! rudolf
PhpSybaseAdmin http://freshmeat.net/projects/phpsybaseadmin/ jeffersonmfs
PHP and Sybase 15 # cat /opt/sybase/SYBASE.sh >> /etc/profile # exit Make new logon # vi /var/build/php-5.2.3/ext/sybase_ct/php_sybase_ct.h change this line ... #define CTLIB_VERSION CS_VERSION_100 ...to... #define CTLIB_VERSION CS_VERSION_150 # ln -sd /opt/sybase /home/sybase # cp /opt/sybase/OCS-15_0/lib/libsybcomn.a /opt/sybase/OCS-15_0/lib/libcomn.a # cp /opt/sybase/OCS-15_0/lib/libsybcs.a /opt/sybase/OCS-15_0/lib/libs.a # cp /opt/sybase/OCS-15_0/lib/libsybct.a /opt/sybase/OCS-15_0/lib/libct.a # cp /opt/sybase/OCS-15_0/lib/libsybintl.a /opt/sybase/OCS-15_0/lib/libintl.a The new file /etc/ld.so.conf.d/sybase it must have the line /opt/sybase/OCS-15_0/lib # ldconfig BUILD PHP # ./configure --with-apxs2=/usr/sbin/apxs --with-config-file-path=/etc/ --with-sybase-ct=/opt/sybase/OCS-15_0 # make # make install # cp php.ini-dist /etc/php.ini Change display_erros=On to display_erros=Off Edit Apache's httpd.conf file to associate .php files with a MIME type: # # PHP script support # AddType application/x-httpd-php .php rbuico
maybe it can help. my database is ASE this is my script.... <? $cnn = sybase_connect("db_server","sa","password"); $result = sybase_query("Select itemno,stockno from your_db..your_table"); $i = 0; while ($r = sybase_fetch_array($result)) { $i++; $itemno = $r["itemno"]; $stockno = $r["stockno"]; echo "$i $stockno $itemno "; } ?> note that I did not use the sybase_select_db("db") function because ASE had a default database. thx... borreo
It's important to note that sybase_ct connect or pconnect were causing GPF. If you experienced this problem, just update PHP to 4.0.6. zeldorblat
In response to the post by jon dot bertsch at ucop dot edu, it is possible to install both the FreeTDS libraries and the Sybase libraries. The problem is that the Sybase extension alias's its function names to the mssql_ functions. Take a look in your PHP source directory under /ext/sybase_ct/php_sybase_ct.c near the top where the sybase_functions[] declaration is. You can comment out the part that alias's the function names, recompile with FreeTDS and Sybase, and you're all set! ddc
If you would like to use the wide table support of Sybase ASE 12.5, take advantage of XML/XQL embedded in the database and use varchars of more than 255 char, you'll need to recompile PHP changing this line in the php_sybase_ct.h file: From: #define CTLIB_VERSION CS_VERSION_100 To: #define CTLIB_VERSION CS_VERSION_125 This will only run if you have installed Sybase ASE Open Client v. 12.5 and configured PHP telling it where the OCS is... (./configure --with-sybase-ct=$SYBASE_HOME/OCS [...]) -- Diego Dal Cero. borreo
If you use IIS and sybase-ct library, be sure to use PHP 4.0.6 or higher, since older version caused crashes.
james
If you get a segfault with sybase-ct, add a en_US entry to your $SYBASE/locales/locales.dat file: <PRE> [linux] locale = en_US, us_english, iso_1 ... </PRE> matt dot sawyer
I've noticed (after days of frustration) that setting the sybase.interface_file to a location other than the default ($SYBASE/interfaces) in php.ini doesn't always work. I finally gave up and copied my interface entries to the default location, and it works consistently now. (This is even with sybase.interface_file still set to the non-default location).
sean dot healey
I've finally got PHP 5.0.5 running under Apache2 on Solaris 8 ... connecting to Sybase ASE servers 12.0 and 12.5 using CT-LIB 12.5. The following was my build procedure - Build Apache: ./configure \ --prefix=/usr/local/apache2 \ --enable-so make make install Edit httpd.conf, adjusting directives to suit the local environment. Following advice given above, update the Sybase version string in the PHP sybase_ct module header file: vi /var/build/php-5.0.5/ext/sybase_ct/php_sybase_ct.h change this line ... #define CTLIB_VERSION CS_VERSION_100 ...to... #define CTLIB_VERSION CS_VERSION_125 Build PHP: SYBASE=/..../..../sybase12_5 <<-- path to your Sybase distribution root SYBASE_OCS=OCS-12_5 LD_LIBRARY_PATH=$SYBASE/$SYBASE_OCS/lib export SYBASE SYBASE_OCS PATH LD_LIBRARY_PATH ./configure \ --prefix=/usr/local/php \ --with-sybase-ct=$SYBASE/$SYBASE_OCS \ --enable-static=sybase-ct \ --with-apxs2=/usr/local/apache2/bin/apxs \ --enable-sysvmsg \ --enable-sysvsem \ --enable-sysvshm make make test NOTE: 'make test' will almost certainly fail all of the Sybase functionality, unless you update the test include file to use valid connectivity details for your local server: vi /var/build/php-5.0.5/ext/sybase_ct/tests/test.inc // Change if needed define('HOST', '****'); define('USER', '****'); define('PASSWORD', '****'); make install Edit Apache's httpd.conf file to associate .php files with a MIME type: # # PHP script support # AddType application/x-httpd-php .php .phtml AddType application/x-httpd-php-source .phps Edit the apachectl script, inserting the following variable declarations after environment variables are imported: SYBASE=/..../..../sybase12_5 SYBASE_OCS=OCS-12_5 LD_LIBRARY_PATH=$SYBASE/$SYBASE_OCS/lib:$LD_LIBRARY_PATH export SYBASE SYBASE_OCS LD_LIBRARY_PATH Ensure you have an 'interfaces' file in the root of your sybase distribution (Above the OCS-12_5 subdirectory), containing a server entry in the following format for each server you want to connect to: dataservername_ds <tab> master tcp ether <hostname> <port> <tab> query tcp ether <hostname> <port> (if this is your dataserver machine, there will be at least 1 entry already for the local dataserver. It is advisable to install all of the above on a separate machine though, with its own copy of the sybase client) Cross fingers, and: apachectl start If you get 'relocation' errors when starting Apache with the php module configured to load, check the output of 'ldd libphp5.so'. Each of the Sybase libraries should link to files under your Sybase client distribution: ldd /usr/local/apache2/modules/libphp5.so libtcl.so => /.../sybase12_5/OCS-12_5/lib/libtcl.so libintl.so.1 => /.../sybase12_5/OCS-12_5/lib/libintl.so.1 libcomn.so => /.../sybase12_5/OCS-12_5/lib/libcomn.so libct.so => /.../sybase12_5/OCS-12_5/lib/libct.so libcs.so => /.../sybase12_5/OCS-12_5/lib/libcs.so ... <snip other libraries> ... If you see 'libintl.so' linking anywhere else, this is likely because the PHP build has incorrectly linked to a slightly different filename - libintl.so.1 - which doesn't exist in the Sybase client. Unfortunately a completely unrelated library of the same name does exist elsewhere in Unix! (Apparently the Sybase version was created before the duplicate was introduced into Unix). My workaround was to create the following symlink in sybase client library 'lib' directory - libintl.so.1 -> ./libintl.so* 'make distclean' in your PHP build directory, and repeat the build as above. hoadley
I would STRONGLY recommend using the ct library over the db library when compiling sybase support with php4+. I ran into strange http child seg faults when trying to issue multiple sql statements in one php page. Using ct-library there is no problem.
ericnewman
I struggled to get this to work for a week. Here's a tip. Log on to your system using the same login as your web server, probably "nobody". Using this account, make sure you can get isql to work. In my case, I had to change the permissions on the /opt/sybase folder, as well as chmod the /opt/sybase/interfaces file to 644. (It was 600 by default, and did not allow anyone but root to read it.) Once I did this, things started to happen...
ms
I solved my connection problems by setting ENV variables directly in PHP. putenv ("SYBASE=/opt/sybase"); putenv ("SYBPLATFORM=linux"); putenv ("LD_LIBRARY_PATH=/opt/sybase/lib"); putenv ("LC_ALL=default"); putenv ("PATH=\"/opt/sybase/bin:$PATH\""); putenv ("DSQUERY=SYBASE"); -- Martin Sarajervi punkarruso
I just want to report that, like explained in bug #27562, selective stored procedures (like sp_helpdb) don't return a resultset with freeTDS >= 0.62. (using php <= 4.3.9) If you have installed such releases of freeTDS, downgrade to 0.61.x. elee
Freetds 5.2 bugs!! For those who use Freetds 5.2 running under linux connect to sqlserver2000, there is a bugs in selecting NVARCHAR field that data will either duplicated or truncated. To avoid this problem, please use CAST or CONVERT function in sql statement such as: $query="select CAST(fieldname as nchar(1000)) as fieldname from table" Feel free to contact us at aikok@netfront.net or elee@kinwai.net German Chu & Eagle Lee basilio_mail
For those, who might want to use SyBase client not only under Linux, you may try to use open-source FreeTDS library - http://www.freetds.org Also there's how-to for FreeTDS and PHP: http://www.freetds.org/userguide/php.html greg dot fenton
For Sybase/iAnywhere SQL Anywhere (a.k.a Adaptive Server Anywhere, a.k.a. ASA), you likely should try the SQLAnywhere PHP module [which now ships with ASA as of 9.0.2]: http://www.ianywhere.com/developer/code_samples/sqlany_php_module.html ASA can work with TDS (Open Client), but if performance is something you care about you likely want to use the native ASA interface. For info/help, consider posting to sybase.public.sqlanywhere.general or sybase.public.sqlanywhere.linux (http://www.ianywhere.com/support/newsgroups.html) Hope this helps, greg.fenton ddc
Compiling PHP with Sybase ASE 12.5 on Linux. Assuming that you have installed the Sybase ASE 12.5 client in linux, and you have the SYBASE env variable set, you can compile PHP >= 4.0.6 with Sybase ASE 12.5. Just use: --with-sybase-ct=$SYBASE/OCS instead of --with-sybase-ct=$SYBASE ilya
Amigos, pay attention: sybase_get_last_message() is gone! Read logs or set track_errors=On and use $php_errormsg instead.
chptma
about sybase-ct library You can download the file from php.net but the samples in the tar (and php) maybe not compile I have this problem in some systems (but not in others with old librarys and old gcc). Try freetds from www.freetds.org that is ok! System wthout trouble Debian 2.1 gcc (2.7.2.3) libc-2.0.7.so System With trouble Debian 2.2 gcc (2.95.2) libc-2.1.3.so RedHat 6.2 gcc [egcs] (2.91.66) libc-2.1.3.so Please refer to mssql if you try to connect to MS SQL Server!!! aj
A note for all who may be struggling... Microsoft did away with the ct-lib support in SQL Server 2000. I played with it and found a couple of articles related to it on google. A workaround/different method would be preferrable. Anybody? koos
A bit more about blobs: If you want to retrieve blobs without them getting truncated, do a 'set textsize value' query first. |
Change Language.NET Functions Apache-specific Functions Alternative PHP Cache Advanced PHP debugger Array Functions Aspell functions [deprecated] BBCode Functions BCMath Arbitrary Precision Mathematics Functions PHP bytecode Compiler Bzip2 Compression Functions Calendar Functions CCVS API Functions [deprecated] Class/Object Functions Classkit Functions ClibPDF Functions [deprecated] COM and .Net (Windows) Crack Functions Character Type Functions CURL Cybercash Payment Functions Credit Mutuel CyberMUT functions Cyrus IMAP administration Functions Date and Time Functions DB++ Functions Database (dbm-style) Abstraction Layer Functions dBase Functions DBM Functions [deprecated] dbx Functions Direct IO Functions Directory Functions DOM Functions DOM XML Functions enchant Functions Error Handling and Logging Functions Exif Functions Expect Functions File Alteration Monitor Functions Forms Data Format Functions Fileinfo Functions filePro Functions Filesystem Functions Filter Functions Firebird/InterBase Functions Firebird/Interbase Functions (PDO_FIREBIRD) FriBiDi Functions FrontBase Functions FTP Functions Function Handling Functions GeoIP Functions Gettext Functions GMP Functions gnupg Functions Net_Gopher Haru PDF Functions hash Functions HTTP Hyperwave Functions Hyperwave API Functions i18n Functions IBM Functions (PDO_IBM) IBM DB2 iconv Functions ID3 Functions IIS Administration Functions Image Functions Imagick Image Library IMAP Informix Functions Informix Functions (PDO_INFORMIX) Ingres II Functions IRC Gateway Functions PHP / Java Integration JSON Functions KADM5 LDAP Functions libxml Functions Lotus Notes Functions LZF Functions Mail Functions Mailparse Functions Mathematical Functions MaxDB PHP Extension MCAL Functions Mcrypt Encryption Functions MCVE (Monetra) Payment Functions Memcache Functions Mhash Functions Mimetype Functions Ming functions for Flash Miscellaneous Functions mnoGoSearch Functions Microsoft SQL Server Functions Microsoft SQL Server and Sybase Functions (PDO_DBLIB) Mohawk Software Session Handler Functions mSQL Functions Multibyte String Functions muscat Functions MySQL Functions MySQL Functions (PDO_MYSQL) MySQL Improved Extension Ncurses Terminal Screen Control Functions Network Functions Newt Functions NSAPI-specific Functions Object Aggregation/Composition Functions Object property and method call overloading Oracle Functions ODBC Functions (Unified) ODBC and DB2 Functions (PDO_ODBC) oggvorbis OpenAL Audio Bindings OpenSSL Functions Oracle Functions [deprecated] Oracle Functions (PDO_OCI) Output Control Functions Ovrimos SQL Functions Paradox File Access Parsekit Functions Process Control Functions Regular Expression Functions (Perl-Compatible) PDF Functions PDO Functions Phar archive stream and classes PHP Options&Information POSIX Functions Regular Expression Functions (POSIX Extended) PostgreSQL Functions PostgreSQL Functions (PDO_PGSQL) Printer Functions Program Execution Functions PostScript document creation Pspell Functions qtdom Functions Radius Rar Functions GNU Readline GNU Recode Functions RPM Header Reading Functions runkit Functions SAM - Simple Asynchronous Messaging Satellite CORBA client extension [deprecated] SCA Functions SDO Functions SDO XML Data Access Service Functions SDO Relational Data Access Service Functions Semaphore SESAM Database Functions PostgreSQL Session Save Handler Session Handling Functions Shared Memory Functions SimpleXML functions SNMP Functions SOAP Functions Socket Functions Standard PHP Library (SPL) Functions SQLite Functions SQLite Functions (PDO_SQLITE) Secure Shell2 Functions Statistics Functions Stream Functions String Functions Subversion Functions Shockwave Flash Functions Swish Functions Sybase Functions TCP Wrappers Functions Tidy Functions Tokenizer Functions Unicode Functions URL Functions Variable Handling Functions Verisign Payflow Pro Functions vpopmail Functions W32api Functions WDDX Functions win32ps Functions win32service Functions xattr Functions xdiff Functions XML Parser Functions XML-RPC Functions XMLReader functions XMLWriter Functions XSL functions XSLT Functions YAZ Functions YP/NIS Functions Zip File Functions Zlib Compression Functions |