저는 Centos 7에서 웹 서버 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"'
나를 도와주신 분들께 감사드립니다 :)