Les extensions OCI8 se chargent en CLI mais pas en navigateur

Nous avons presque le même problème que cette personne:

Fonctions OCI8 non trouvées lorsqu’apache avec php5

La différence entre leur problème et le notre est que nous n’avons qu’un seul php.ini (/etc/php.ini). Nous utilisons PHP 5.3.5 avec Apache 2.2.3 sur CentOS 5.5. Comme vous pouvez le constater, leur question n’a jamais été vraiment résolue, mais j’espère que vous pourrez nous aider. Merci!

Ré. SELinux et OCI8 lors de l’exécution en tant que module Apache

Solution suggérée de http://old.nabble.com/php-with-oci8-td16460446.html

vous pouvez personnaliser votre politique pour autoriser cet access à l’aide de audit2allow

# grep http /var/log/audit/audit.log | audit2allow -M myhttp # semodule -i myhttp.pp 

Cela devrait vous permettre d’exécuter ces applications oracle avec SELinux en mode application.

Il y a aussi un sujet à ce sujet sur les forums oracle

J’ai trouvé la cause du problème mais je ne sais pas comment le résoudre de façon permanente. Apparemment, notre serveur de test utilise SELinux sur “Enforce”. Le paramétrer sur “Permissive” permet à Apache / PHP d’exécuter l’extension oci8. Mon patron, cependant, veut que SELinux revienne sur “Enforce” pour lequel je ne lui en veux pas. Je vais envisager de créer une exception pour Oracle / oci8.

Assurez-vous d’avoir ORACLE_HOME, ORACLE_SID et LD_LIBRARY_PATH dans les environnements Apache. N’oubliez pas qu’Apache s’exécute en tant que démon. Par conséquent, il n’a pas nécessairement access aux mêmes variables d’environnement que lorsque vous exécutez vos scripts PHP à partir de la ligne de commande.

 ORACLE_HOME=/u01/app/oracle/product/10.1 ORACLE_SID=orcl export ORACLE_HOME ORACLE_SID export LD_LIBRARY_PATH=${ORACLE_HOME}/lib:${LD_LIBRARY_PATH} 

Selon l’endroit où se trouve votre serveur de firebase database et la manière dont vous vous connectez, vous pouvez également définir TWO_TASK ou TNS_ADMIN. Pour vous assurer que le jeu de caractères correct est utilisé, vous pouvez également définir NLS_LANG.

MODIFIER

Je construis normalement PHP à partir de la source, donc j’ai le plein contrôle:

En supposant que le client Oracle standard est exécuté sur le serveur, ma configuration ./con comprend:

 --with-pdo-oci=$ORACLE_HOME 

Au cours des quelques occasions où j’ai eu besoin de construire pour le client instantané Oracle, j’ai utilisé

 --with-pdo-oci=instantclient,/usr,10.2.0.3 

dans ma ligne ./configure

Notez que j’utilise PDO_OCI plutôt que OCI8, mais que ./configure devrait être similaire

L’autre étape que je prends lors du déploiement sur un nouveau serveur est de s’assurer que l’utilisateur / groupe apache (tel que défini par les directives User et Group dans httpd.conf … mon apache s’exécute en tant qu’utilisateur “daemon”) exécuter le privilège sur les fichiers sous ORACLE_HOME