Установите драйверы PHP для Microsoft SQL Server

Esto funciona:

sudo $(which your_command)

Ejemplo llamando a mi script gpsque enumera los procesos de GPU Nvidia:

$ sudo gps
sudo: gps: command not found
$ sudo $(which gps)
  PID TTY          TIME CMD
 9922 tty7     02:42:47 Xorg

Explicación:

$ set -x;sudo $(which gps);set +x
++ which gps
+ sudo /home/xyztuv/myScripts/shl/gps
  PID TTY          TIME CMD
 9922 tty7     02:42:39 Xorg
+ set +x
0
03.07.2019, 11:54
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"'

спасибо всем, кто мне помог:)

0
28.01.2020, 03:30

Команда используется для получения пути к каталогу ваших дополнительных файлов конфигурации 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.

0
28.01.2020, 03:30

Обратные галочки в некотором роде эквивалентны $(), но их сложнее использовать. В данном случае они эквивалентны. Таким образом, код может читаться как.

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"
0
28.01.2020, 03:30

Теги

Похожие вопросы