When you say you changed the LANG variable, where did you change it?
Changing it when you run/start the ASE server will have no effect whatsoever. You have to change it for the client processes.
The LANG variable needs to be set to a legitimate "locale". You can find the valid ones in the sybase directory structures. Under the sybase home directory, you will find the "locales" directory and in that a file called locales.dat If you go to the Solaris section you will find the LANG setting should be either...
en_US or
en_US.ISO8859-1
Either of these should set the character set to iso_1 but obviously, the second version is more specific and I would go with it.
What happens if you log into the machine (O/S) using the same account that Apache runs under? What is the LANG variable set to? Try logging in that way and create a little PHP test program to connect to the database and do a simple query, say "select @@version"? That way you can experiment with solutions to the problem without having to weed through lots of unnecessary layers.
Regards,
Bill