как мне отредактировать файл в командной строке? - PullRequest
2 голосов
/ 30 мая 2009

Я пытаюсь создать php-файл, который добавляет пользователя, и создать каталог public_html в linux с помощью функции exec () (php).

Я могу добавить следующий код в php файл

exec ("useradd -d / home / username -m username"); exec ("mkdir / home / username / public_html");

сейчас .. Мне нужно добавить public_html в smb.conf, чтобы работать с public_html в windows.

возможно ли редактировать smb.conf в командной строке?

Конечно, я собираюсь использовать SSH как root для запуска php-файла.

Ответы [ 4 ]

3 голосов
/ 30 мая 2009

РЕДАКТИРОВАТЬ: После прочтения ответа Роя Рико, я думаю, что я неправильно понял вопрос.

Вы можете использовать либо nano, либо vi. Если вы новичок, то нано будет более прямым. Просто используйте это так:

nano /etc/samba/smb.conf

Я считаю, что Ctrl + O сохранит файл, а Ctrl + X завершится.

2 голосов
/ 30 мая 2009

Вы хотите отредактировать файл, используя скрипт php, выполненный в командной строке, или вы собираетесь использовать командную строку для редактирования командной строки (используя интерактивную оболочку)?

если вы пытаетесь отредактировать файл с помощью вашего php-скрипта, вам придется использовать команды fopen, fwrite, а также предоставить доступ к файлу для вашего скрипта, тогда вы, вероятно, столкнетесь с большой безопасностью вопросы и т. д. В итоге, это более чем быстрый ответ, который может быть дан вам здесь.

если вы используете интерактивную оболочку, то vi и emacs - отличные редакторы, но это очень сложно, если вы никогда не использовали их раньше. Pico и Nano более дружелюбны для тех, кто не знаком с редакторами CL.

1 голос
/ 30 мая 2009

Посмотрите на функцию parse_ini_file () .

Тогда, если вы хотите записать в INI-файл, попробуйте это:

function writeini($file,$title,$item,$data) {
  $source = file($file);
  $t_match = "/^\[".$title."\]/i";
  $s_title = "";
  $c = "0";
  $o = "";
  foreach ($source as $temp) {
    $c++;
    if (preg_match("/^\[.+\]/i",$temp)) {
          if (preg_match($t_match,$l_title)) {
            $done = "yes";
            $f_write .= $item."=".$data."\n";
          }
          $l_title = $temp;
          $f_write .= $temp;
        } elseif (preg_match("/^".$item."=/i",$temp) && preg_match($t_match,$l_title)) {
          $done = "yes";
          $f_write .= $item."=".$data."\n";
          $l_title = "";
        } elseif ($c == count($source) && $done != "yes") {
          if (preg_match($t_match,$l_title)) {
            $f_write .= $temp.$item."=".$data."\n";
          } else {
                $f_write .= $temp."[".$title."]\n".$item."=".$data."\n";
          }
        } else {
          $f_write .= $temp;
        }
  }
  $ini_write = fopen($file,'w');
  fwrite($ini_write,$f_write);
  fclose($ini_write);
}
1 голос
/ 30 мая 2009

Большинство людей используют Vim или Emacs в качестве редактора командной строки. Лично я предпочитаю emacs, но попробуйте оба и посмотрите, что вы предпочитаете.

...