6 votes

Comment puis-je détecter, à l'aide de php, si la machine a installé oracle (oci8 et/ou pdo_oci) ?

Comment puis-je détecter, en utilisant php, si la machine a oracle (oci8 and/or pdo_oci) installé ?

Je travaille sur un PHP où certains développeurs, comme moi, l'ont installé, mais les utilisateurs n'en ont guère besoin. Comment puis-je écrire une fonction rapide à utiliser dans le code pour que mes thématiciens puissent travailler sur l'apparence du site sans que celui-ci ne se bloque ?

4voto

Greg Points 7391

Si l'extension oci n'est pas installée, vous obtiendrez une erreur fatale avec la réponse de farside.myopenid.com, vous pouvez utiliser function_exists('oci_connect') ou extension_loaded('oci8') (ou quel que soit le nom de l'extension).

1voto

Nathan Strong Points 1519

Les personnes ici présentes ont des éléments de solution, mais regroupons-les en une seule solution.

Pour une seule instance d'une fonction oracle, le test avec function_exists() est suffisant ; mais si le code est saupoudré d'appels OCI, il sera très difficile d'envelopper chacun d'entre eux dans une balise function_exists() test.

Par conséquent, je pense que la solution la plus simple serait de créer un fichier appelé nodatabase.php qui pourrait ressembler à quelque chose comme ça :

<?php
// nodatabase.php
// explicitly override database functions with empty stubs. Only include this file
// when you want to run the code without an actual database backend. Any database-
// related functions used in the codebase must be included below.
function oci_connect($user, $password, $db = '', $charset='UTF-8', $session_mode=null)
{
}

function oci_execute($statement, $mode=0)
{
}
// and so on...

Ensuite, incluez conditionnellement ce fichier si un global (disons, THEME_TESTING) est défini juste avant l'endroit où le code de la base de données est appelé. Une telle inclusion pourrait ressembler à ceci :

// define("THEME_TESTING", true) // uncomment this line to disable database usage
if( defined(THEME_TESTING) )
  include('nodatabase.php'); // override oracle API with stub functions for the artists.

Désormais, lorsque vous confiez le projet aux artistes, il leur suffit d'effectuer cette seule modification et ils sont prêts à partir.

0voto

Whammy Points 1

Je ne sais pas si j'ai bien compris votre question, mais un moyen simple serait de faire ceci :

<?php
  $connection = oci_connect('username', 'password', 'table');
  if (!$connection) {
    // no OCI connection.
  }
?>

0voto

Comme mentionné ci-dessus par Greg, vous pouvez utiliser la méthode function_exists(). N'oubliez pas que vous pouvez aussi utiliser la méthode suivante pour voir toutes les spécificités de l'environnement de votre installation PHP :

<?php
phpinfo();
?>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X