Почему соединение с ASE не выполняется, когда требуется шифрование пароля?

Как я могу паролировать шифрование соединений сервера базы данных с PHP на Sybase ASE?

Соединение PHP с ASE терпит неудачу, когда net password encryption reqd = 1 .

Как мы можем подключить PHP DB к ASE с помощью шифрования паролей? Есть ли ключевое слово или параметр PHP, которые необходимо установить для подключения на стороне клиента?

Related of "Почему соединение с ASE не выполняется, когда требуется шифрование пароля?"

Ниже приведено решение этой проблемы с точки зрения возможности подключения с 64-разрядной базовой машины Linux с PHP версии 5.3.6 и драйвера Sybase из Sybase CTISQL Utility/15.7/P-EBF19975 ESD #3/DRV.15.7.0.3 . Хотя мы получили это для работы, нам нужно, чтобы Apache работал в дополнение к этому, я надеюсь, что поддержка Sybase может помочь нам в этом, а также с решением ниже на наш вопрос. Я размещаю это здесь для всех. Примечание. AFAICT, это не поддерживаемое решение Sybase. Пожалуйста, используйте его как свой собственный риск.

Для этого нужно немного вещей:

  1. Я использую последний Debian Stable 6.05 сжимать 64 бит
  2. Я устанавливаю ebf19977 (комплект разработчика с открытым клиентом, да, номер выключен, это не ошибка, вы увидите, когда вы его установите), загруженный из Sybase
  3. Загрузите PHP 5.3.6 с сайта php.net для компиляции из источника.

Шаг 1) Я предполагаю, что нужно легко установить это. Убедитесь, что у вас есть доступ к sudo

Шаг 2). Чтобы установить комплект разработчика, вам нужно ввести весь путь к тому месту, где файл setup.bin находится так: введите sudo /home/btran/ebf19977/setup.bin, это запустит настройку, в значительной степени следуйте инструкциям там, чтобы установить OpenClient и связанные с ним инструменты. Убедитесь, что Open Client и библиотека PHP установлены.

После того, как вы выполнили установку, выполните несколько других действий:

Задайте все переменные среды Sybase, выполнив SYBASE.sh в корневом каталоге в / opt / sybase

 sudo cat /opt/sybase/SYBASE.sh >> /etc/profile , if necessary source /etc/profile 

Это установит большинство переменных, но вам нужно добавить пару переменных, которых нет:

  PHPRC=/opt/sybase/OCS-15_0/config LD_LIBRARY_PATH=/opt/sybase/OCS-15_0/php/php536_64/lib:/opt/sybase/OCS-15_0/lib 

Ваш / ect / profile должен выглядеть примерно так:

  # ------------------------------------ # Sybase Product Environment variables # ------------------------------------ SYBASE="/opt/sybase" export SYBASE SYBASE_OCS="OCS-15_0" export SYBASE_OCS INCLUDE="/opt/sybase/OCS-15_0/include":$INCLUDE export INCLUDE LIB="/opt/sybase/OCS-15_0/lib":$LIB export LIB PATH="/opt/sybase/OCS-15_0/bin":$PATH export PATH LD_LIBRARY_PATH="/opt/sybase/OCS-15_0/php/php536_64/lib:/opt/sybase/OCS-15_0/lib:/opt/sybase/OCS-15_0/lib3p64:/opt/sybase/OCS-15_0/lib3p":$LD_LIBRARY_PATH export LD_LIBRARY_PATH PHPRC="/opt/sybase/OCS-15_0/config" export PHPRC JAVA_HOME="/opt/sybase/jre32" export JAVA_HOME RIBO_HOME="/opt/sybase/jutils-3_0/ribo" export RIBO_HOME # ------------------------------------ 

Затем вам также потребуется внести изменения в файл интерфейсов, расположенный в корневом каталоге / opt / sybase, чтобы выглядеть примерно так, пожалуйста, не используйте это, используйте свою информацию:

  dev master tcp ether dev.company.com 4425 query tcp ether dev.company.com 4425 prod master tcp ether prod.company.com 4425 query tcp ether prod.company.com 4425 ribo master tcp ether testhost.company.com 5005 query tcp ether testhost.company.com 5005 

Вам также необходимо внести изменения в ocs.cfg, чтобы правильно запустить PHP, это находится в папке /opt/sybase/OCS-15_0/config чтобы выглядеть так:

  ;;;;;;;;;;; ; This is the default external configuration definition file. Feel free ; to add your own customizations. ; [DEFAULT] ; This is the default section loaded by applications that use CS_SEC_ENCRYPTION = CS_TRUE [ANSI_ESQL] ; This section defines configuration which an ANSI conforming CS_CAP_RESPONSE = CS_RES_NOSTRIPBLANKS CS_EXTRA_INF = CS_TRUE CS_ANSI_BINDS = CS_TRUE CS_OPT_ANSINULL = CS_TRUE CS_OPT_ANSIPERM = CS_TRUE CS_OPT_STR_RTRUNC = CS_TRUE CS_OPT_ARITHABORT = CS_FALSE CS_OPT_TRUNCIGNORE = CS_TRUE CS_OPT_ARITHIGNORE = CS_FALSE CS_OPT_ISOLATION = CS_OPT_LEVEL3 CS_OPT_CHAINXACTS = CS_TRUE CS_OPT_CURCLOSEONXACT = CS_TRUE CS_OPT_QUOTED_IDENT = CS_TRUE ; End of default sections [isql] CS_SEC_ENCRYPTION = CS_TRUE [PHP] CS_SEC_ENCRYPTION = CS_TRUE ; This is a sample section showing how you might alter configuration ; properties for you Embedded SQL application. [SAMPLE_ESQL] ; use most of the ANSI properties defined above include = ANSI_ESQL ; but override some default properties CS_OPT_CHAINXACTS = CS_FALSE ; run in autocommit mode ;;;;;;;;; 

Примечание. Очень важно проверить наличие файла php.ini в том же каталоге, что и /opt/sybase/OCS-15_0/config (это указывает на файл exention, посмотрите на переменную окружения LD_LIBRARY_PATH="/opt/sybase/OCS-15_0/php/php536_64/lib )

вы, php.ini, должны читать так:

  extension=/opt/sybase/OCS-15_0/php/php536_64/lib/sybaseasephp.so 

Шаг 3) скомпилируйте PHP из исходного кода, снова Sybase вызовите 64 бит.

Я загружаю источник в /opt/php-5.3.6 для постоянной работы с большинством приложений для Linux.

  cd to /opt/php-5.3.6 ./configure 

ОЧЕНЬ ВАЖНО отметить, что здесь мы столкнулись с проблемой, если я выберу любую другую опцию configure, а не default ./configure, PHP не будет загружаться с ошибкой ниже:

 btran@sls-baonix:/opt/php-5.3.6$ php ~/test-dev.php PHP Warning: PHP Startup: Unable to load dynamic library '/opt/sybase/OCS-15_0/php/php536_64/lib/sybaseasephp.so' - /opt/sybase/OCS-15_0/php/php536_64/lib/sybaseasephp.so: undefined symbol: executor_globals in Unknown on line 0 Fatal error: Call to undefined function sybase_connect() in /home/btran/test-dev.php on line 10 ] 

Причина, по которой нам нужны другие варианты, – это нам тоже нужно работать с Apache. Мы получили его сейчас, чтобы работать с PHP, но мы должны иметь возможность инициировать PHP с сайта, так что зависимость заключается в том, что PHP помимо поддержки Sybase, он также должен поддерживать Apache. Если у любого эксперта PHP есть решение, пожалуйста, входите и помогите нам.