SAP e PHP com Linux
Após exaustivos testes, finalmente consegui fazer com que o acesso SAP pelo PHP funcionasse em Linux. No tutorial anterior, minha solução baseava-se em um servidor com Windows rodando o ZENDSERVER. Não achei muito elegante. Vamos então compilar um Módulo para o PHP e adicioná-lo na configuração, o que irá resultar em um PHP com acesso as RFCs do SAP.
Nesse nosso exemplo, irei utilizar um Debian Wheezy 7.7 com PHP 5.4.39. Precisamos ainda do RFCSDK e do SAPRFC 1.4.1. Estou disponibilizando os dois neste artigo pois sei o quanto é difícil encontrá-los pelas "internets" (principalmente no site da SAP. Quem já usou sabe).
Segue os links dos arquivos:
Note que as versões dos softwares testadas devem ser observadas atentamente, visto que ao menor sinal de coisas diferentes, tudo pára de funcionar.
O servidor testado é uma instalação crua do Debian Wheezy 7.7 (foi utilizado o CD netinst e adicionado apenas os componentes básicos e o SSH). Como não é o intuito deste tutorial, não irei descrever o processo de instalação do Debian. Caso não conheça o este processo, acesse o link.
Após o servidor instalado, precisamos resolver algumas dependências. Use os comandos abaixo no terminal (aconselho utilizar algum cliente para acesso SSH, como o putty). Digite os comandos como usuário root:
#apt-get install php5 apache2 php5-dev libstdc++5 make
Com as dependências resolvidas, copie os dois arquivos baixados deste tutorial para a pasta /opt do seu servidor (utilize alguma ferramenta tipo Winscp).
Novamente no terminal, use os comando abaixo para descompactar e copiar o RFCSDK para a pasta correta dentro do Linux:
#tar -xvf rfcsdk.tgz
Crie a pasta /usr/sap:
#mkdir /usr/sap
Mova o conteúdo que está em /opt para a pasta criada anteriormente:
#mv rfcsdk /usr/sap/rfcsdk/
Agora vamos a instalação do SAPRFC. Use o comando abaixo para descompactar a pasta com os arquivos:
#tar -zxvf saprfc-1.4.1.tar.gz
Entre na pasta:
#cd saprfc-1.4.1/
Uma pequena alteração é necessária para que o processo funcione perfeitamente. Entre no arquivo saprfc.c e altere a linha que está escrito "function_entry" para "zend_function_entry".
Você pode usar o nano:
#nano saprfc.c
Veja na figura abaixo como deve ficar o arquivo:
Instalando:
#phpize
#./configure
#make
#make install
Após estes passos, o modulo está criado, precisamos apenas configurar o PHP para entender esse novo módulo. Use os comandos abaixo:
#cd /etc/php5/mods-available
#echo "extension=saprfc.so" > saprfc.ini
#ln -s /etc/php5/mods-available/saprfc.ini /etc/php5/conf.d/25-saprfc.ini
Restarte o apache com o seguinte comando:
#service apache2 restart
Crie um arquivo em /var/www (pasta padrão para as páginas do Apache). Utilize o comando abaixo:
#touch /var/www/teste.php
Adicione o comando do php para exibir as informações do servidor (phpinfo()). Use o comando abaixo:
#echo "<? phpinfo() ?>" >> /var/www.teste.php
Agora use um browser qualquer e acesse o endereço do servidor, colocando no final o nome da página criada (teste.php):
Localize, na página que aparecer, a listagem do módulo SAPRFC carregado:
Parabéns! Agora você pode brincar com o SAP e o PHP!