Microsoft SQL Server用PHPドライバのインストール

Microsoft SQL Server用PHPドライバのインストール

私はCentos 7でWebサーバーnginx、php 7.1 fpm、laravelを使用しています。 SQL Serverをインストールしたいと思います。Linuxの公式インストールチュートリアルしかし、このコマンドは混乱しています。

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"「Scan for other .ini files in:/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"

各行に対して最初にbitを実行してから、$()その位置を出力(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たりcurlsudoを使用できることがわかりました。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"'

私を助けてくれた人に感謝します:)

関連情報