У меня есть учетная запись на общем веб-хосте, которая позволяет мне работать на сервере через SSH. Поскольку у меня возникли проблемы с установкой Magento с помощью веб-установщика, я переключился на установку из командной строки. Команда для установки выглядит примерно так:
php -f install.php -- \
...
--db_host "dbhost" \
--db_name "dbname" \
--db_user "username" \
--db_pass "password" \
...
--admin_username "username" \
--admin_password "password" \
...
Пока команда выполняется (и выполняется в течение нескольких минут), конечно, все остальные на этом сервере могут видеть параметры (и пароли), проверяя запущенные процессы (с помощью ps aux
например). Мне просто было интересно, можно ли каким-то образом скрыть эти данные (например, с помощью каких-то сценариев / программ оболочки)?
Не легко. Если вы написали сценарий оболочки, который выполнял эту команду, эта команда все равно будет отображаться в ps
.
Если бы вы знали достаточно PHP, вы могли бы открыть это install.php
, найдите, где он обрабатывает эти флаги пользователя / передачи, и самостоятельно жестко запрограммируйте значения (убедитесь, что в сценарии есть 700 разрешений, чтобы никто другой не мог его прочитать), затем вы можете запустить команду без флагов.
Предполагая, что их сценарий не пытается угадать, как он выполняется, и не реагирует должным образом, вы можете сделать что-то вроде этого:
<?php
unset($argv);
$argv=array("install.php",
"--db_host","dbhost",
"--db_name","dbname",
...
"--and_so_on","value"
);
include("install.php");
?>
как новый скрипт (снова режим 700) и запустите его php newinstall.php
. $argv
обычно представляет собой массив аргументов команды (начиная с имени команды), поэтому здесь вы unset()
существующий и создайте новый со всеми необходимыми параметрами командной строки, затем вы include()
install.php, чтобы PHP выполнял этот сценарий (с измененным списком $ argv, чтобы install.php думал, что он был выполнен с этими параметрами).
Менее технический подход (и я понимаю, что в конечном итоге это не ответ на ваш вопрос!), Но в таких ситуациях для простоты в прошлом я просто использовал одноразовые детали и после установки меняю их через систему администратора / сгенерированные файлы конфигурации.