為 Microsoft SQL Server 安裝 PHP 驅動程序
我在 Centos 7 中使用 Web 伺服器 nginx、php 7.1 fpm 和 laravel。我想按照Linux 的官方安裝教程安裝 SQL Server,但我對這個命令感到困惑:
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"
並生成“掃描在:/etc/php.d 中的其他 .ini 文件”現在我對 sed 命令感到困惑。
該命令用於獲取附加 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:
並保留 config 目錄的路徑/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
.
後面的記號有點等同於
$()
,但更難使用。在這種情況下,它們是等價的。所以程式碼可以讀為。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"