有人在 macOS Sonoma 14.6.1 上使用 XAMPP 8.1.17 成功使用 PHP sqlsrv-connection 吗?

问题描述 投票:0回答:1

我可以在 Windows 和 Ubuntu24.04 上安装和使用 Microsoft 的 sqlsrv 和 sqlsrv_pdo 驱动程序包,但对于 MacOS 总是无法在运行时加载连接到驱动程序!甚至任何 php 屏幕错误日志记录都无法像启用的 php 文件中那样工作:

<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);

$serverName = '1nnnnn'; // Or your server name
$connectionOptions = array(
    "Database" => 'Ifffffff', // Your database name
    'Uid' => 'ddddddd',
    'PWD' => 'passwoooord',
);
//echo "???"; // when this two commented lines are uncommented the site shows ???
//exit(); // when this two commented lines are uncommented the site shows ???
$conn = sqlsrv_connect($serverName, $connectionOptions);
if ($conn === false) {
    die(print_r(sqlsrv_errors(), true));
}
echo "Connection successful!";
?>

XAMPP/Apache 适用于任何 php,但在调用 sqlsrv_connect 时,浏览器显示“无法打开”,并且 php_error_log 文件中的错误为:

dyld[8251]:断言失败:(this->magic == kMagic),函数loadAddress,文件Loader.cpp,第163行。

驱动程序文件位于正确的位置:

@MacBook-Pro-von-Ha---en no-debug-non-zts-20210902 % ls
opcache.so  pdo_dblib.so    pdo_sqlsrv.so   pgsql.so    sqlsrv.so

在 php.ini 文件中加载扩展名:

extension=sqlsrv.so
extension=pdo_sqlsrv.so

给出的正确访问权限:

-rwxr-xr-x@ 1 root  admin   26720  6 Apr  2023 pdo_dblib.so
-rwxr-xr-x@ 1 root  admin  333216 11 Sep 15:42 pdo_sqlsrv.so
-rwxr-xr-x@ 1 root  admin  117680  6 Apr  2023 pgsql.so
-rwxr-xr-x@ 1 root  admin  336880 11 Sep 17:14 sqlsrv.so

已安装 ODBC

g@MacBook-Pro-von-Ha---en no-debug-non-zts-20210902 % odbcinst -j

unixODBC 2.3.12
DRIVERS............: /usr/local/etc/odbcinst.ini
SYSTEM DATA SOURCES: /usr/local/etc/odbc.ini
FILE DATA SOURCES..: /usr/local/etc/ODBCDataSources
USER DATA SOURCES..: /Users/hjbeling/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

php macos xampp sqlsrv
1个回答
0
投票

问题解决了! 我终于按照微软推荐的方式安装了 php、sqlsrv 驱动程序和 apache:

[https://learn.microsoft.com/de-de/sql/connect/php/installation-tutorial-linux-mac?view=sql-server-ver16#installing-on-macos]

第 4 步结束时很棘手:

echo "LoadModule php7_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp7.so" >> /usr/local/etc/httpd/httpd.conf
    (echo "<FilesMatch .php$>"; echo "SetHandler application/x-httpd-php"; echo "</FilesMatch>";) >> /usr/local/etc/httpd/httpd.conf

如果我的格式不好,我很抱歉。也许 Safari 无法很好地处理编辑器代码设置,或者更确切地说,是我作为 stackoverflow 上的新海报做错了。

无论如何 libphp7.so 是错误的,httpd.conf 中正确的行是:

LoadModule php_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp.so
<FilesMatch .php$>
SetHandler application/x-httpd-php
</FilesMatch>
© www.soinside.com 2019 - 2024. All rights reserved.