我有2台服务器连接到同一网络。其中之一是 Fedora Web服务器,其中包含网页和表单。另一个是 Windows Server 2008 R2 ,其中包含一个 SQL Server 2012 。
我一直试图将sqlsrv扩展名安装到Web服务器中,以将表单连接到 Windows Server 上的数据库。
我遵循了this tutorial in spanish和this other one,但仍然无法使用。当我尝试输入表格时,发生500错误。
无法加载资源:服务器响应状态为500 (内部服务器错误)
这是我必须尝试连接到数据表的代码。
<?php
function FormatErrors( $errors )
{
/* Display errors. */
echo "Error information: <br/>";
if(!$errors || is_array($errors) ) {
return ;
}
foreach ( $errors as $error );
{
echo "SQLSTATE: ".$error['SQLSTATE']."<br/>";
echo "Code: ".$error['code']."<br/>";
echo "Message: ".$error['message']."<br/>";
}
}
$q = isset($_GET['q'])? intval($_GET['q']) : 0;
$serverName = "192.168.9.10:1433";
$conInfo = array ( "Database"=>"logytel", "UID"=>"sa", "PWD"=>"password");
$con = sqlsrv_connect($serverName, $conInfo);
if ($con) {
echo "Conexión establecida.<br>";
}else{
echo "La conexión no se pudo establecer.<br>";
die( print_r(sqlsrv_errors(), true));
}
sqlsrv_select_db($con,"ajax_demo");
$sql="SELECT * FROM prueba1 WHERE codigo = '".$q."'";
$getResults= sqlsrv_query($con, $sql);
if ($getResults == FALSE) {
die(FormatErrors(sqlsrv_errors()));
}
$cantidad_encontrado = sqlsrv_num_rows($getResults);
if ($cantidad_encontrado > 0) {
echo "<table>
<tr>
<th>Código</th>
<th>Nombre</th>
<th>Apellidos</th>
<th>Proyecto</th>
</tr>";
while($row = sqlsrv_fetch_array($getResults)) {
echo "<tr>";
echo "<td>" . $row['codigo'] . "</td>";
echo "<td>" . $row['nombre'] . "</td>";
echo "<td>" . $row['apellidos'] . "</td>";
echo "<td>" . $row['proyecto'] . "</td>";
echo "</tr>";
}
echo "</table>";
sqlsrv_free_stmt($getResults);
sqlsrv_close($con);
}else{
echo "<h1>NO ENCONTRE DATOS </h1>";
}
?>
<!DOCTYPE html>
<html>
<head>
<script>
function showUser(str) {
if (str == "") {
document.getElementById("txtHint").innerHTML = "";
return;
} else {
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("txtHint").innerHTML = this.responseText;
}
};
xmlhttp.open("GET","getuser.php?q="+str,true);
xmlhttp.send();
}
}
</script>
</head>
<body>
<form>
<select name="users" onchange="showUser(this.value)">
<option value="">Select a person:</option>
<option value="1">Luis</option>
<option value="2">Nora</option>
<option value="3">Aron</option>
</select>
</form>
<br>
<div id="txtHint"><b>Selecciona tu nombre</b></div>
</body>
</html>
我尝试通过命令行安装所有内容,但是命令yum install php-sqlsrv
无效,因此我尝试手动下载 .so文件,然后添加它们到相应的目录( / usr / lib64 / php / modules / )。添加它们后,我将修改 php.ini 文件并添加以下行:
[SQL Server]
extension=php_pdo_sqlsrv_72_nts.so
extension=php_sqlsrv_72_nts.so
然后,我转到 .so文件所在的目录( /etc/php.d / )
查看 30-pdo_sqlsrv.ini (创建的文件),我插入:
extension=php_pdo_sqlsrv_72_nts.so
查看 pdo_sqlsrv.so (重复3次):
extension=pdp_sqlsrv.so
并查看出现的最后一个文件 sqlsrv.ini (重复3次):
extension=sqlsrv.so
然后,我重新启动httpd服务(service httpd restart
)检查了文件 phpinfo.php ,但仍然没有出现sqlsrv部分。
我不知道该怎么办,我需要连接两个服务器。我卸载了所有内容,然后重新安装了所有内容,例如3次,但没有解决问题。我在寻找其他方法来做,但是没有其他结果。除了我之前提到的安装以外,它没有给我安装任何错误。
我没有创建或编辑任何文件吗?我在做什么错了?