安装 Microsoft SQL Server 的 PHP 驱动程序

安装 Microsoft SQL Server 的 PHP 驱动程序

我在 Centos 7 中使用 Web 服务器 nginx、php 7.1 fpm 和 laravel。我想安装 SQL ServerLinux官方安装教程但我对这个命令感到困惑:

echo extension=pdo_sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/pdo_sqlsrv.ini

echo extension=sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/sqlsrv.ini

它究竟意味着什么?我试图理解它extension=sqlsrv.so然后>>写入php --ini(这意味着 php.ini 对吗?)

然后我尝试使用它php --ini | grep "Scan for additional .ini files"并生成“扫描以下位置中的其他 .ini 文件:/etc/php.d”,现在我对 sed 命令感到困惑。

答案1

该命令用于获取附加 php 配置文件的目录路径以创建新*.ini文件。

如果我运行该命令,php --ini它会列出我的配置文件和路径,如下所示:

$ php --ini
Configuration File (php.ini) Path: /etc/php/7.2/cli
Loaded Configuration File:         /etc/php/7.2/cli/php.ini
Scan for additional .ini files in: /etc/php/7.2/cli/conf.d
Additional .ini files parsed:      /etc/php/7.2/cli/conf.d/10-opcache.ini,
/etc/php/7.2/cli/conf.d/10-pdo.ini,
/etc/php/7.2/cli/conf.d/20-calendar.ini,
...

你可以看到这条线Scan for additional .ini files in: /etc/php/7.2/cli/conf.d。用于grep获取该特定行,该sed命令用于剥离Scan for additional .ini files in:并保留配置目录的路径/etc/php/7.2/cli/conf.d

因此,第一个命令将字符串附加extension=pdo_sqlsrv.so到文件/etc/php/7.2/cli/conf.d/pdo_sqlsrv.ini,在您的情况下,路径是/etc/php.d/pdo_sqlsrv.ini.

答案2

后面的勾号有点相当于$(),但更难使用。在这种情况下它们是等效的。所以代码可以读作。

echo extension=pdo_sqlsrv.so >> "$(php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||")/pdo_sqlsrv.ini"

echo extension=sqlsrv.so >> "$(php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||")/sqlsrv.ini"

对于每一行,首先运行 中的位$(),然后用输出 (stdout) 替换其位置。然后重新扫描整条生产线并再次运行。

因此, 中的位$()用于创建目录名称,并且文本extension=pdo_sqlsrv.so(对于第一个)被附加到«directory»/pdo_sqlsrv.ini

我已重构为(未测试,因为我不打算安装 php)。希望现在有意义。

directory="$(php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||")"

echo extension=pdo_sqlsrv.so >> "${directory}/pdo_sqlsrv.ini" 
echo extension=sqlsrv.so >> "${directory}/sqlsrv.ini"

答案3

我自己已经得到了答案。事实证明,如果像这样使用,我可以执行命令echocurl使用 sudo :bash -c

sudo bash -c 'echo extension=pdo_sqlsrv.so >> "$(php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||")/pdo_sqlsrv.ini"'

感谢任何帮助过我的人:)

相关内容