php - uncaught - Error fatal: llamada a la función no definida sqlsrv_connect()
fatal error: call to undefined function sqlsrv_connect() in (5)
Cuando instales extensiones de terceros, debes asegurarte de que todos los parámetros de compilación coincidan:
- Versión de PHP
- Arquitectura (32/64 bits)
- Compilador (VC9, VC10, VC11 ...)
- Hilo de seguridad
Los fallos comunes incluyen:
- Edite el archivo
php.ini
incorrecto (típico de los paquetes); el camino correcto es show enphpinfo()
- Olvidate de reiniciar Apache
No ser capaz de ver los errores de inicio; esos deben aparecer en los registros de Apache, pero también puede usar la línea de comando para diagnosticarlo, por ejemplo:
php -d display_startup_errors=1 -d error_reporting=-1 -d display_errors -c "C:/Path/To/php.ini" -m
Si todo está bien, debería ver sqlsrv
en el resultado del comando:
[Módulos de PHP]
bcmath
calendario
Núcleo
[...]
SPL
sqlsrv
estándar
[...]
He encontrado bastantes publicaciones con respecto a la misma pregunta de tema, sin embargo, aún no puedo resolverlo, por lo que pregunto. Estoy tratando de conectarme a sql en mi script php. Mi cadena de conexión es:
/* Specify the server and connection string attributes. */
$serverName = "xxx-PC/SQLExpress";
$connectionOptions = array("Database"=>"Salesforce");
$conn = sqlsrv_connect($serverName, $connectionOptions);
if($conn === false)
{
die(print_r(sqlsrv_errors(), true));
}
He instalado e incluido lo siguiente en mi archivo php.ini
ubicado debajo de la carpeta wamp: C:/wamp/bin/php/php5.4.16
:
extension=c:/wamp/bin/php/php5.4.16/ext/php_sqlsrv_53_ts.dll
Mi wampserver
está funcionando bien y también lo están los servicios wampapache
y wampsqld
. Puedo ejecutar php.exe con éxito. Sin embargo, no puedo establecer la conexión con SQL Server 2008 R2
donde se encuentra mi base de datos. ¡Por favor ayuda!
EDIT 1: El servidor de wamp ejecuta el servicio wampmysql mientras trato de conectarme a SQL Server 2008 R2
. Podría ser ésta la razón? ¿Debo usar MySQL
lugar de SQL
? ¿Alguna sugerencia?
EDIT 2: No veo la sección sqlsrv
en absoluto cuando ejecuto phpinfo()
aunque he agregado extension=php_sqlsrv_54_ts.dll
en el archivo php.ini
ubicado en la carpeta bin del servidor wamp.
Primero compruebe que la extensión esté cargada correctamente en phpinfo();
(algo como sqlsrv
debería aparecer). Si no, la extensión no está cargada correctamente. También debe reiniciar apache después de instalar una extensión.
Si está utilizando Microsoft Drivers 3.1, 3.0 y 2.0 . Verifique que su versión de PHP ya se haya instalado con IIS.
Utilice esta secuencia de comandos para verificar la versión de php:
<?php echo phpinfo(); ?>
O
Si ha instalado PHP Manager en IIS utilizando el instalador de plataforma web, puede verificar la versión desde allí.
Entonces:
Si está utilizando una nueva versión de PHP (5.6), descargue Drivers de aquí
Para la versión de PHP inferior a 5.6, descargue controladores de aquí
- La versión 3.1 del controlador PHP requiere PHP 5.4.32 o PHP 5.5.16 o posterior.
- La versión 3.0 de PHP Driver requiere PHP 5.3.0 o posterior. Si es posible, use PHP 5.3.6 o posterior.
- El controlador PHP versión 2.0 funciona con PHP 5.2.4 o posterior, pero no con PHP 5.4. Si es posible, use PHP 5.2.13 o posterior.
A continuación, utilice PHP Manager para agregar los controladores descargados al archivo de php config
. Puede hacerlo como se muestra a continuación (examine los archivos y presione OK). A continuación, reinicie el servidor IIS
Si este método no funciona, cambie la versión de php e intente ejecutar su script php. Para cambiar la php version
a menor y tratar de entender lo que sucedió. Luego, puede descargar los controladores relevantes siguiendo mis pasos anteriores.
tengo esto mismo porque en httpd.conf en apache PHPIniDir D:/wamp/bin/php/php5.5.12
que era incorrecto
This me ayudó a llegar a mi respuesta. Hay dos archivos php.ini
ubicados, en mi caso, para wamp. Uno está en la carpeta php y el otro en la carpeta C:/wamp/bin/apache/Apachex.xx/bin
. Cuando nos sqlsrv_connect
a SQL a través de la función sqlsrv_connect
, nos referimos al archivo php.ini
en la carpeta apache
. Agregue lo siguiente (según su versión) a este archivo:
extension=c:/wamp/bin/php/php5.4.16/ext/php_sqlsrv_53_ts.dll