我在 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
我自己已经得到了答案。事实证明,如果像这样使用,我可以执行命令echo
或curl
使用 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"'
感谢任何帮助过我的人:)