Últimamente he estado trabajando en un proyecto en el cual es necesario que sea escalable en cuanto a la conexión a base de datos y uso en terminales. Hablo de escalabilidad ya que la aplicación debe de conectarse con MySQL y Oracle conPHP, con la primer Database no hay problema ya que PHP trabaja bastante bien con MySQL, pero con Oracle se debe de realizar cierto proceso para poder trabajar con las funciones de PHP para Oracle. Lo que sigue es el resultado de mi experiencia sobre un servidor local, y con esto aprendi como Conectar PHP con Oracle 11g 😀
Lo primero que tenemos que hacer es comprobar si existe alguna extensión oci8, para buscamos esta cadena en el phpinfo():
Si encontramos alguna cadena después de la cadena oci8, como en la anterior imagen, solo bastara con modificar una linea y reiniciar el servidor local para que tome los cambios.
Para modificar el archivo iremos a la siguiente ubicación y lo editaremos el archivo con nuestra aplicación favorita para modificar archivos de texto plano:
Una vez abierto el archivo buscaremos la siguiente linea y eliminamos el » ; «, descomentando la linea para que pueda ser habilitada la libreria:
1 | extension=php_oci8_11g.dll |
extension=php_oci8_11g.dll
Solo nos queda reiniciar el servicio del Servidor Apache, así que paramos e iniciamos el servidor para que tome los cambios. Ojo, esto es importante!
Pero bueno, que tal que la versión que tengamos no tenga este soporte nativo para Oracle? Googleando encontré una solución para este problema.
Ahora mirando si nos funciona, crearemos una carpeta en nuestro servidor local, a nuestro gusto, y en ella el archivo que hará la conexión con el Servidor Oracle:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <!--?php // Create connection to Oracle $conn = oci_connect("pbelial", "talcosa", "localhost/electiva"); if (!$conn) { $m = oci_error(); echo $m['message'], "n"; exit; } else { echo "Conexión con éxito a Oracle!"; } // Close the Oracle connection oci_close($conn); ?--> |
<!--?php // Create connection to Oracle $conn = oci_connect("pbelial", "talcosa", "localhost/electiva"); if (!$conn) { $m = oci_error(); echo $m['message'], "n"; exit; } else { echo "Conexión con éxito a Oracle!"; } // Close the Oracle connection oci_close($conn); ?-->
La linea 3 es la encargada de la conexión, esta consta del nombre de usuario, la contraseña, y host de Oracle. Recordemos que el host se puede manejar tanto por IP como por el nombre de la maquina.
Bueno, para finalizar, si todo sale bien podremos ver el siguiente resultado cuando abramos el archivo por el navegador web:
Buenas tardes
tegno cliente oracle 9i y Acabo de solucionar el problema con la siguiente herramienta:
wamp: http://www.wampserver.es/
Se activa muy facil la OCI8 con solo un clic pero sino en el PHP.INI buscas extension=php_oci8.dll y le quitas el «;»
Ojo no puedes usar extension=php_oci8.dll y extension=php_oci8_11g.dll al mismo tiempo
Prueben con este string de conecion a base de datos remota:
<?php
$db_test = '(DESCRIPTION=( ADDRESS_LIST= (ADDRESS= (PROTOCOL=TCP) (HOST=XX.XXX.XXX.XXX) (PORT=1521)))( CONNECT_DATA= (SID=NOMBRE_BD) ))';
$conn = oci_connect("USUSARIO", "CONTRASEÑA", $db_test);
$query = oci_parse($conn,'SELECT CAMPO FROM TABLA order by 1 asc');
oci_execute($query);
while ($row = oci_fetch_array($query, OCI_ASSOC)) {
foreach ($row as $item) {
echo $item." «;
}
echo «\n»;
}
oci_free_statement($query);
oci_close($conn);
?>
Espero les sirva, creo que lei mas de 12 manuales y 56 paginas
Hola a todos he regresado porque gracias a mi Dios todo poderoso pude resolver el problema de la conexión con oracle 11 g edicion de empresarial, les comento …. el tutorial es excelente solo falta unos detalles les explico camaradas, yo uso xampp para conectarme en su version 1.8.1 esta version me permite tener en el servidor php disponibles las extenciones 11 g que nesecitamos, lo que descomentamos en el archivo php.ini …. CORRECTO! yo tambien descomente la linea que dice extension = php_pdo_oci.dll……OJO!……………………….luego descargue el instan cliente 11g de 32 bits porque si se dan cuenta la version del servidor php que nos instala xampp es de 32 bits….OJO! no de 64 y ese era el problema yo uso w7 de 64 bits y descargaba el instan cliente 11 g de 64 por eso no levantaba la conexión…….UNA COSA MAS despues que desgarguen el cliente descomprimanlo en el directorio C:/instantclient_11_2 esta dirección deben agregarla a las variables de entorno del sistema despues reinician su pc y listo correra todo bien! Agradecimintos a Dios por favor que solo somos útiles si servimos a los demás.
Hola amigo trato de hacer lo que tu hicisite pero con oracle express edition 11g , en localhost pero tngo errores y quiero hacerlo con pdo porfavor hechame una mano mi correo es guayoswing@gmail.com como podria contactarme disculpa
no mi amigo no me conecta, he seguido a pie de la letra las instrucciones he revisado todo y solo es la pinche conexión desde el servidor php que no levanta, agradeciera ayuda gracias por la atención.
Muchas gracias por la información; hice el paso a paso, pero me saca el error: «Fatal error: Call to undefined function oci_connect() in C:xampphtdocsoracleoracle.php on line 3»
No se si sean los datos de la base de datos, tengo la duda en la direccionServidor/SID
Esta es mi linea 3 : $conn = oci_connect(«system», «654321», «localhost/xe»);
pero me dice: Fatal error: Call to undefined function oci_connect() in C:\xampp\htdocs\conn\conexion.php on line 3
Por favor , necesito resolver esto urgente :s
Fatal error: Call to undefined function oci_connect() in C:\xampp\htdocs\prueba1.php on line 9
no se mira
conectaroracle();
class basedatos{
function conectaroracle(){
$conn = oci_connect(«ufinal»,»123456″ ,»localhost»);
Muchas Gracias por esa informacion me ha sido muy util!!!
Necesito ayuda. No puedo hacer la conexión a mi base de datos en oracle 11g con php 5.5.6.
Todo esto lo tengo en un servidor local (mi lap) pero siempre me aparece el mismo error: Fatal error: Call to undefined function oci_connect() in C:xampphtdocsPruebasprueba.php on line 2.
Ya tengo descomentada la liena en el php.ini y en la página del xammp del phpinfo me aprece igual que la captura de pantalla que esta al inicio de este post.
Mi codigo: $connection=oci_connect(‘ELIEL’, ‘ELIEL’, ‘localhost/XE’);
Hola amigo, disculpa la demora, pero las obligaciones que últimamente he tenido me han dejado sin tiempo 🙁 Primero, el orden de los datos en tu código estan bien, pero veo que no usas comillas dobles, sino sencillas. Usa las comillas dobles:
Cualquier cosa me avisas a admin@jagonzalez.org Saludos.
Compañero, a mi me aparece este error: Fatal error: Call to undefined function oci_connect() in C:xampphtdocsBullMarketprueba.php on line 3
he hecho todo lo que dices, pero sigue sin funcionar.
Muy buena ayuda amigo 😀
En cuanto a las funciones de php .. cambian ? ya que las funciones suelen ser de este tipo, mysql_tal_cosa
Hola pedro, te cuento que no. Para MySQL solo sirven las funciones mysql ó mysqli. Para oracle las funciones comienzan en oci*. Las funciones las podras encontrar en el manual de PHP.
Disculpa ese codigo me sirve para conectarme a una base de datos remota ?
Claro, solo necesitas cambiar los datos de conexión con el servidor.
$conn = oci_connect(«pbelial», «talcosa», «localhost/electiva»);
Pregunta: «pbelial» que lleva aqui
«talcosa»
«localhost/electiva» me podrias explicar,me encuentro desarrollandi un inventario en
oracle y estoy detenido en esto, por tu atencion gracias.
$conn = oci_connect(“pbelial”, “talcosa”, “localhost/electiva”);
En el orden de ideas, seria: oci_connect( usuario, contraseña, direccionServidor/SID); Recuerda que estos datos son de tipo string, es por esto que en el ejemplo van entre comillas dobles, el SID es el identificador de tu base de datos en el servidor. Espero que con esto te quede mas claro 🙂