私は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
たり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"'
私を助けてくれた人に感謝します:)