Como usar o FreeTDS e o UnixODBC em um CentOS 7 com PHP 5.4 para acessar bancos de dados SQL Server e Sybase ASA

Este texto mostrará como configurar conexões ao SQL Server e ao Sybase ASA, a partir de um CentOS 7, usando o FreeTDS, UnixODBC e  o PHP/Apache.

Dependendo das versões de cada um dos componentes envolvidos as configurações necessárias poderão ser um pouco diferentes das que serão mostradas aqui mas, mesmo assim, você saberá por onde começar e o caminho das pedras a seguir. Especificamente as configurações foram feitas no seguinte ambiente:

  • CentOS 7.1, rodando:
    • Apache 2.4.6
    • PHP 5.4.16
    • FreeTDS 0.95
    • UnixODBC 2.3.1
  • MS SQL Server 2008 R2, rodando em um Windows 2008 R2 Server
  • Sybase Adaptive Server Anywhere (ASA) 9.0.2, rodando em Windows 2008 R2 Server

Como você pode ver, o host linux (CentOS está atualizado) mas o SQL Server e o Sybase já são versões muito antigas (bem, foi o que conseguimos para testar).

Se você tem versões mais novas do SQL Server ou do Sybase, siga as instruções abaixo e altere, se necessário, as configurações para seu ambiente. Você terá que consultar a documentação na internet.

Observação: o Sybase Adaptive Server Anywhere (Sybase ASA) foi renomeado para Syabse SQL Anywhere nas versões mais novas. Note também que existe um outro produto, o Sybase Adaptive Server Enterprise (Sybase ASE). Independentemente do produto Sybase que você está usando, as configurações são semelhantes ao descrito aqui (talvez você tenha que ajustar um ou outro parâmetro, consulte a documentação na internet).

Mãos à obra!

1) Atualize o CentOS

Recomendação padrão antes de qualquer coisa: atualize o CentOS para garantir que todos os pacotes estejam nas últimas versões, com os patches de segurança instalados:

yum check-update
yum update

2) Instale os pacotes necessários

Você precisará, minimamente, do Apache, PHP e do UnixODBC:

yum install httpd httpd-tools php php-common php-cli php-odbc php-pdo unixODBC unixODBC-devel

A configuração do Apache e do PHP estão fora do escopo deste documento. Consulte Instalação do Apache, PHP e MySQL (MariaDB) no CentOS 7 para maiores informações.

3) Instale e configure o FreeTDS

O FreeTDS é uma implementação open source do protocolo TDS (Tabular Data Stream) usado pelo SQL Server e pelo Sybase, e permite que hosts unix/linux consigam se conectar a esses bancos de dados.

O CentOS não traz um pacote pronto para a instalação do FreeTDS, mas no repositório EPEL (Extra Packages for Enterprise Linux) existe um pacote prontinho para uso. Configure o CentOS para usar o repositório EPEL e instale o FreeTDS:

yum install epel-release
yum check-update
yum install freetds freetds-devel

O arquivo de configuração do FreeTDS é o /etc/freetds.conf. Edite esse arquivo para ficar semelhante ao seguinte (prestando atenção aos itens em vermelho):

[global]
 # Versão global do protocolo TDS
 #tds version = 4.2
 tds version = 5.0

 # Armazenar dump (TDSDUMP file) para debug?
 dump file = /tmp/freetds.log
 debug flags = 0xffff

 # Timeouts
 timeout = 10
 connect timeout = 10

 # Tamanho do buffer para campo TEXT para evitar
 # erros do tipo out-of-memory errors
 text size = 64512


[nome_banco_sybase]
 host = ip_do_servidor
 port = porta_do_servidor
 tds version = 5.0


[nome_banco_sqlserver]
 host = ip_do_servidor
 port = porta_do_servidor
 tds version = 7.0

Agora temos que testar se a conexão ao Sybase e ao SQL Server, via FreeTDS, está funcionando corretamente. Para isso usamos o utilitário tsql do FreeTDS.

Teste de conexão ao Sybase:

# tsql -S nome_banco_sybase -U usuario -P senha
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
1> quit

Se você chegou no prompt “1>”, conforme mostrado acima, pode dar o quit e sair feliz pois a conexão FreeTDS ao Sybase está funcionando corretamente.

Teste de conexão ao SQL Server:

# tsql -S nome_banco_sqlserver -U usuario -P senha
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
1> quit

Se você chegou no prompt “1>”, conforme mostrado acima, pode dar o quit e sair feliz pois a conexão FreeTDS com o SQL Server está funcionando corretamente.

Se alguma dessas conexões não foi bem-sucedida, você terá que procurar uma solução antes de continuar. Em particular o nome do banco do Sybase é uma configuração chata: qualquer errinho nesse nome e você verá uma mensagem de erro conforme a seguir:

# tsql -S nome_banco_sybase_errado -U usuario -P senha
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
Msg 911 (severity 16, state 0) from [nome_banco_sybase_errado]:
 "ASA Error -83: Specified database not found"
There was a problem connecting to the server

A mensagem acima é típica de uma configuração do FreeTDS usando o nome do banco de dados do Sybase errado. Consulte seu DBA para saber exatamente o nome do banco de dados que tem que ser configurado no FreeTDS.

4) Configure o UnixODBC

Até o momento já temos o FreeTDS instalado, configurado e acessando os bancos SQL Server e Sybase (se você não conseguiu completar a seção 3, nem adianta seguir adiante: consulte a documentação e faça o FreeTDS se conectar corretamente aos bancos de dados, pois o UnixODBC usará essa conexão).

Agora é hora de configurar o UnixODBC.

Edite o arquivo /etc/odbcinst.ini e deixe com o seguinte conteúdo:

[ODBC]
Trace = No
TraceFile = /tmp/sql.log
ForceTrace = No

[FreeTDS]
Driver = /usr/lib64/libtdsodbc.so.0
FileUsage = 1

No arquivo acima estamos dizendo que o UnixODBC deve usar o driver do FreeTDS (/usr/lib64/libtdsodbc.so.0) para as conexões. Se quisermos, para debug de conexões problemáticas, podemos habilitar os trace file mudando de No para Yes (em sistemas de produção, deixar como No).

Agora crie ou edite o arquivo /etc/odbc.ini e deixe com o seguinte conteúdo:

# Data Source Name (DSN) para o MS SQL-Server:
[alias1]
Description = Conexão ao SQL Server 2008 R2
Driver = FreeTDS
Trace = No
Server = ip_do_servidor
Database = nome_banco_sqlserver
Port = porta_do_servidor


# Data Source Name (DSN) para o Sybase:
[alias2]
Description = Conexão ao Sybase ASA 9
Driver = FreeTDS
Trace = No
Servername = nome_banco_sybase  # igual ao /etc/freetds.conf
Port = porta_do_servidor
TDS_Version = 5.0

Explicando o arquivo acima para o SQL Server:

  • alias1 = é um alias arbitrário, o nome do DSN. Pode ser qualquer coisa e será usado nas chamadas de conexões ao SQL Server
  • Server = IP do servidor SQL Server
  • Database = nome do banco de dados ao qual você quer se conectar
  • Port = porta do SQL Server para receber conexões

Explicando o arquivo acima para o Sybase:

  • alias2 = é um alias arbitrário, o nome do DSN. Pode ser qualquer coisa e será usado nas chamadas de conexões ao Sybase
  • Servername = atenção com esse parâmetro: apesar do parâmetro se chamar “servername”, ele significa o nome do banco de dados do Sybase, idêntico ao nome do banco de dados do Sybase configurado no arquivo /etc/freetds.conf. O DSN alias2 procurará pela entrada “Servername” em /etc/freetds.conf para saber como estabelecer a conexão.
  • Port = porta do Sybase para receber conexões

Agora vamos testar as conexões aos bancos de dados via UnixODBC, através do utilitário isql do UnixODBC.

Teste de conexão ao SQL Server, usando o DSN alias1:

# isql alias1 usuario senha -v
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> select count(*) from tabela;
+------------+
|            |
+------------+
| 2094       |
+------------+
SQLRowCount returns 1
1 rows fetched
SQL> quit

Muito bom, tudo funcionando. Nos conectamos ao DSN chamado alias1 (que no arquivo /etc/odbc.ini aponta para um SQL Server) com um usuário e senha. A conexão foi bem-sucedida e fizemos um select simples de uma tabela qualquer que tinha 2094 linhas. Como tudo funciona, demos o quit para sair.

Agora vamos testar a conexão ao Sybase, usando o DSN alias2:

 # isql alias2 usuario senha -v
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> select count(*) from tabela;
+------------+
| count(*)   |
+------------+
| 347342     |
+------------+
SQLRowCount returns 1
1 rows fetched
SQL> quit

Perfeito, tudo funcionando! Nos conectamos ao DSN chamado alias2 (que no arquivo /etc/odbc.ini aponta para um Sybase) com um usuário e senha. A conexão foi bem-sucedida e fizemos um select simples de uma tabela qualquer que tinha 347342 linhas. Como tudo funciona, demos o quit para sair.

5) Ajuste o SELinux

O CentOS 7 traz o SELinux (Security Enhanced Linux) habilitado por padrão e, por causa dessas de segurança, o Apache não pode acessar recursos de rede nem de bancos de dados.

Para configurar o SELinux com as permissões corretas, liberando o Apache para acessar recursos de rede e de banco de dados, temos que ajustar duas propriedades booleanas no SELinux, com os comandos abaixo:

setsebool -P httpd_can_network_connect on
setsebool -P httpd_can_network_connect_db on

6) Configure o acesso via PHP

A configuração do PHP é simples: basicamente é definir as conexões aos bancos de dados em um arquivo .php, via PDO ou via odbc_connect.

O seguinte arquivo teste.php testa a conexão ao SQL Server via PDO e ao Sybase via odbc_connect:

<?php

 $ip = "ip_do_servidor_sqlserver";
 $porta = "porta_do_servidor";
 $banco = "nome_do_banco";
 $usuario = "usuario";
 $senha = "senha";

 $conexao1 = new PDO("odbc:Driver=FreeTDS; Server=$ip; Port=$porta; Database=$banco; UID=$usuario; PWD=$senha;");
 if (! $conexao1 ) {
 print '<h3>Não foi possível conectar ao MS SQL-Server.</h3>';
 } else {
 print '<h3>Conexão ao MS SQL-Server, via PDO, concluída com sucesso!</h3>';
 }

?>

<?php

 $banco = "alias2";
 $usuario = "usuario";
 $senha = "senha";

 $conexao2 = odbc_connect("Driver=FreeTDS;DSN=$banco", $usuario, $senha );
 if (! $conexao2 ) {
 print '<h3>Não foi possível conectar ao Sybase.</h3>';
 } else {
 print '<h3>Conexão ao Sybase, via odbc_connect, concluída com sucesso!</h3>';
 odbc_close($conexao2);
 }

?>

Como usamos diretamente o PDO sem especificar um DSN para acessar o SQL Server, tivemos que especificar IP, porta, etc. Poderíamos ter feito a conexão com um DSN também, ficaria assim (a variável $dsn deve apontar para o alias do DSN do SQL Server definido em /etc/odbc.ini):

$conexao1 = new PDO("odbc:Driver=FreeTDS;DSN=$dsn", $usuario, $senha);

Para acessar o Sybase usamos o DSN configurado em /etc/odbci.ini, portanto tivemos que usar o alias configurado nesse arquivo.

Se tudo correu bem você verá em seu browser duas mensagens de conexões concluídas, uma para o SQL Server e a outra para o Sybase.

Você pode acessar tanto o SQL Server quanto o Sybase pela PDO ou pelo odbc_connect. Qual é melhor? Não sei, não sou desenvolvedor PHP…

7) Busque ajuda

Se tudo está dando errado, busque documentação nesses sites:

Conexão PHP com o PostgreSQL (e o MySQL) no CentOS 7

Após a instalação do PHP, PostgreSQL e MySQL no CentOS 7, ao tentar fazer um simples teste de conexão do PHP com o PostgreSQL, estava recebendo a seguinte mensagem de erro:

Warning: pg_connect(): Unable to connect to PostgreSQL server: could not connect to server: Permission denied Is the server running on host “localhost” (127.0.0.1) and accepting TCP/IP connections on port 5432?

O código de teste foi o seguinte:

<?php

 $casa = "localhost";
 $banco = "nome_do_banco";
 $porta = 5432;
 $usuario = "nome_do_usuario";
 $senha = "senha_do_usuario";

 $conexao = pg_connect("host=$casa dbname=$banco port=$porta user=$usuario password=$senha");

 if (! $conexao ) {
 print "<h3>Não foi possível conectar ao PostgreSQL.</h3><br />";
 pg_errormessage();
 } else {
 pg_close($conexao);
 print "<h3>Conexão OK.</h3>";
 }

?>

Eu já tinha ajustado as configurações do pg_hba.conf e postgresql.conf e, mesmo assim, o PHP não conseguia estabelecer uma conexão com o PostgreSQL. Por segurança, chequei as regras do firewall e estavam todas corretas também.

Aí me lembrei: o SELinux! Será que o SELinux estaria bloqueando por padrão as conexões ao banco de dados? Bem, o comando abaixo (como root) retorna as configurações do SELinux para os servidores web:

# getsebool -a | grep httpd
httpd_anon_write --> off
httpd_builtin_scripting --> on
httpd_can_check_spam --> off
httpd_can_connect_ftp --> off
httpd_can_connect_ldap --> off
httpd_can_connect_mythtv --> off
httpd_can_connect_zabbix --> off
httpd_can_network_connect --> off
httpd_can_network_connect_cobbler --> off
httpd_can_network_connect_db --> off
httpd_can_network_memcache --> off
httpd_can_network_relay --> off
httpd_can_sendmail --> off
httpd_dbus_avahi --> off
httpd_dbus_sssd --> off
httpd_dontaudit_search_dirs --> off
httpd_enable_cgi --> on
httpd_enable_ftp_server --> off
httpd_enable_homedirs --> off
httpd_execmem --> off
httpd_graceful_shutdown --> on
httpd_manage_ipa --> off
httpd_mod_auth_ntlm_winbind --> off
httpd_mod_auth_pam --> off
httpd_read_user_content --> off
httpd_run_preupgrade --> off
httpd_run_stickshift --> off
httpd_serve_cobbler_files --> off
httpd_setrlimit --> off
httpd_ssi_exec --> off
httpd_sys_script_anon_write --> off
httpd_tmp_exec --> off
httpd_tty_comm --> off
httpd_unified --> off
httpd_use_cifs --> off
httpd_use_fusefs --> off
httpd_use_gpg --> off
httpd_use_nfs --> off
httpd_use_openstack --> off
httpd_use_sasl --> off
httpd_verify_dns --> off

Pronto, identificamos o problema! A propriedade httpd_can_network_connect_db está em “off” (e a httpd_can_network_connect também) e o SELinux está impedindo a conexão do PHP com o PostgreSQL. Para permitir que o SELinux deixe o PHP se conectar ao PostgreSQL (e ao MySQL), faça o seguinte (como root):

setsebool -P httpd_can_network_connect_db on
setsebool -P httpd_can_network_connect on

Agora o Apache/PHP já consegue se conectar aos bancos de dados!

Configuração de SSL/TLS no Apache do CentOS 7

Se você seguiu as instruções detalhadas em Instalação do Apache, PHP e MySQL (MariaDB) no CentOS 7, sua instalação está pronto e funcionando mas não está segura: conexões SSL/TLS não estão habilitadas.

Por padrão o Apache do CentOS 7 não habilita o SSL. Para isso, siga as instruções abaixo.

Verifique se o sistema está atualizado (como root):

# yum check-update
# yum update

Agora instale o mod_ssl e o OpenSSL:

# yum install mod_ssl openssl

Isso criará o arquivo /etc/httpd/conf.d/ssl.conf com as configurações do SSL/TLS. Um problema nesse arquivo é que ele habilita protocolos SSL antigos que já não são seguros: SSLv2 e SSLv3. Devemos desabilitar esses protocolos não seguros e habilitar somente os protocolos seguros TLSv1.1 e TLSv1.2 (se você tem alguma aplicaçãoantiga que não funciona bem com esses protocolos mais novos, habilite também o TLSv1.0). Siga os passos abaixo.

Edite o arquivo /etc/httpd/conf.d/ssl.conf e procure por todas as ocorrências da variável SSLProtocol e deixe da seguinte maneira (se você configurou essa variável em algum virtual host, também deve alterar essa variável na configuração do virtual host!):

SSLProtocol -all +TLSv1.1 +TLSv1.2

Agora reinicie o Apache:

# systemctl restart httpd.service

Se tudo correu bem, o SSL/TLS está habilitado em seu Apache. Por padrão o CentOS gera um certificado auto-assinado com informações genéricas. Temos que criar um outro certificado auto-assinado com informações mais específicas, ou obter um certificado comercial válido na internet (via Comodo, Geotrust, VeriSign, etc.).

Para criar um certificado auto-assinado temos que instalar o pacote crypto-utils:

# yum install crypto-utils

O pacote crypto-utils contém utilitários para criar, manter e gerenciar certificados e chaves privadas, incluindo o utilitário “genkey” da RedHat, que gera o par de chaves e o certificado (nos diretórios /etc/pki/tls/private  e /etc/pki/tls/certs).

Para gerar o certificado e a chave com o utilitário genkey, faça o seguinte (ATENÇÃO! Não execute esse utilitário via SSH pois ele precisa gerar números aleatórios com o dispositivo /dev/random que precisa de movimentos de teclado, mouse, etc. para gerar entropia suficiente para a geração dos números aleatórios; se você rodar esse comando por SSH, não vai terminar nunca!):

Chame o genkey, como root, passando como parâmetro o nome do servidor que utilizará o certificado:

# genkey www.smsaude.com.br

Inicialmente o genkey informará em quais arquivos salvará o certificado e a chave (figura abaixo). Basta clicar next.

genkey passo 01

Depois o genkey solicitará o tamanho da chave. Aceite o padrão de 2048 bits e clique em next:

genkey passo 02

Agora o genkey gerará alguns bits aleatórios (isso não deverá demorar muito):

genkey passo 03

E agora o genkey gerará números aleatórios através do /dev/random. Digite no teclado, movimente o mouse (se for o caso), utilize o disco, enfim: faça qualquer coisa para gerar entropia suficiente para o gerador de números aleatórios (caso contrário esse processo não terminará nunca):

genkey passo 04

Agora o genkey perguntará se você deseja gerar uma solicitação de assinatura para uma autoridade certificadora válida (Comodo, Geotrust, VeriSign, etc.). Se você digitar YES o genkey não gerará um certificado, somente uma solicitação para ser enviado à autoridade certificadora; Se você ditiar NO o genkey gerará um certificado auto-assinado. No nosso caso, escolha a opção NO:

genkey passo 05

Agora o genkey pergunta se a chave privada deverá ser criptografada. ATENÇÃO: se você criptografar a chave privada e gerar uma senha para ela, toda vez que o servidor ou o Apache for reiniciado, a senha do certificado será solicitada; se você não criar uma senha, o sistema não solicitará a senha da chave do certificado no momento do reboot do sistema, mas se alguém invadir seu servidor, poderá obter a chave. Em nosso caso, continue SEM criptografar a chave (não marque a opção):

genkey passo 06

Agora preencha as informações do certificado (não use acentos ou caracteres especiais!):

genkey passo 07

Agora o genkey irá rodar rapidamente e gerar os arquivos solicitados: a chave (www.smsaude.com.br.key – root:root; 400) será gerada no diretório /etc/pki/tls/private e o certificado (www.smsaude.com.br.crt – root:root 640) será gerado no diretório /etc/pki/tls/certs.

Para fazer o Apache usar o novo certificado e chave, altere o arquivo /etc/httpd/conf.d/ssl.conf e aponte os novos arquivos nas variáveis abaixo (se essas configurações estão em algum virtual host, ajuste de acordo):

SSLCertificateFile /etc/pki/tls/certs/www.smsaude.com.br.crt
SSLCertificateKeyFile /etc/pki/tls/private/www.smsaude.com.br.key

Agora basta reiniciar o Apache:

# systemctl restart httpd.service

Se nenhum erro ocorreu, o Apache já está usando os certificados novos. Obviamente, como o certificado é auto-assinado, os browsers reclamarão dizendo que a conexão não é segura. Basta aceitar o certificado no browser (ou então, pagar um certificado válido).

Instalação do Apache, PHP e MySQL (MariaDB) no CentOS 7

Antes de fazer qualquer coisa, verifique se o sistema está atualizado:

# yum check-update
# yum update

Agora, para instalar o Apache, o PHP e o MySQL (MariaDB) no CentOS 7, siga os passos abaixo.

1) Instalação do MySQL (MariaDB):

Depois que o sistema estiver atualizado, como root, instale o MySQL (MariaDB):

# yum -y install mariadb-server mariadb

O CentOS instalará o MySQL (MariaDB) e quaisquer dependências. Depois disso, inicie o banco de dados e habilite a inicialização automática durante o boot do host:

# systemctl enable mariadb.service
# systemctl start mariadb.service

O próximo passo é rodar a rotina de configuração de segurança do MySQL, que “tranca” a instalação para evitar acessos não autorizados (em vermelho negrito estão os comandos a serem digitados durante a execução do comando):

# mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] Y
New password: (digite a senha aqui)
Re-enter new password: (repita a senha aqui)
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...

All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

2) Instalação do Apache:

Como root, instale o Apache:

# yum -y install httpd httpd-manual httpd-tools

O CentOS instalará o Apache e as dependências. Depois disso habilite o Apache para inicialização automática e inicie o daemon:

# systemctl enable httpd.service
# systemctl start httpd.service

Se nenhuma mensagem de erro for exibida, o Apache foi instalado corretamente. Agora é necessário configurar o firewall do CentOS para permitir acesso às portas 80 e 443:

# firewall-cmd --permanent --zone=public --add-service=http
# firewall-cmd --permanent --zone=public --add-service=https
# firewall-cmd --reload

Nesse momento você pode abrir o endereço http://<ip do servidor> para verificar se a página de teste do Apache é exibida corretamente (lembre-se que o firewall corporativo, além do firewall do próprio host onde o Apache está instalado, também tem que ser configurado para permitir o acesso):

Página de teste do Apache

 3) Instalação do PHP:

A instalação básica do PHP é muito simples:

# yum -y install php

O comando acima instalará o PHP 5.4 no CentOS e as dependências. Precisamos instalar mais alguns módulos importantes para o PHP (dependendo de sua aplicação web, outros módulos não listados aqui também podem ser necessários):

# yum -y install php-gd php-mysql php-odbc php-pear php-recode php-xml

Para fazer com que o Apache utilize PHP, basta reiniciá-lo:

# systemctl restart httpd.service

O teste mais básico para verificar se o PHP está instalado e corretamente configurado com o Apache é criar o arquivo /var/www/html/info.php com o seguinte conteúdo:

<?php
phpinfo();
?>

Abra o endereço http://<ip do servidor>/info.php e verifique se as informações do PHP são exibidas corretamente:

Informações do PHP

Por motivos de segurança o arquivo /var/www/html/info.php deve ser excluído após o teste.