Как запустить/остановить приложение в Linux из файла php?

Я хотел бы получить доступ для редактирования любого текстового файла (в редакторе gedit) из PHP.
Я пытаюсь использовать что-то вроде:

<?php
shell_exec("gedit filename.txt");
?>

Но он даже не дает никаких выходов:

$output=shell_exec("gedit filename.txt");
echo=echo"<pre>$output</pre>";

Можно ли открыть любой файл или приложение с PHP на Linux?


person dryhay    schedule 12.07.2015    source источник
comment
Чего вы на самом деле пытаетесь добиться этим?   -  person plocks    schedule 12.07.2015
comment
Я хочу получить ярлык/закладку/ссылку... на локальный файл (pdf, txt, png...) или каталог, который мне нужен.   -  person dryhay    schedule 12.07.2015


Ответы (3)


Gedit - это редактор графического интерфейса.

Что вы можете сделать, это следующее

// instead of less you could also use cat
$file_content = shell_exec("less filename.txt");
// ...
// manipulate the data via a textarea with html and php
$new_file_content = $_POST['textarea'];
$write_to_file = shell_exec("echo \"".$new_file_content."\" > filename.txt");
person derdeagle    schedule 12.07.2015
comment
Я хочу получить новый графический интерфейс gedit (а не другое окно или вкладку браузера) с редактируемым файлом name.txt внутри. - person dryhay; 12.07.2015
comment
Если вы найдете способ получить графический интерфейс gedit через PHP, пожалуйста, дайте мне знать ;-) С тем способом, который я опубликовал, вы не получите ни нового окна браузера, ни новой вкладки. Вам просто нужно текстовое поле в HTML, куда вы помещаете $file_content и редактируете его. - person derdeagle; 12.07.2015
comment
Мне не нужен gedit внутри браузера, но новый экземпляр gedit вне браузера (с открытым редактируемым именем файла.txt). - person dryhay; 12.07.2015

shell_exec- Выполнить команду через оболочку и вернуть полный вывод в виде строки. Вывод выводится в терминал.

Итак, это:

<?php
    $output = shell_exec('ls -lart');
    echo "<pre>$output</pre>";
?>

Вернет ls -lart вашего каталога. Если вы сделаете то же самое с gedit, на выходе будут только сообщения об ошибках и предупреждения, потому что gedit возвращает текст в графический интерфейс, а не в терминал.

Если вы хотите получить текст с помощью этой команды, вы можете сделать это с помощью cat

<?php
     $output = shell_exec('cat ' . $filename');
     echo "<pre>$output</pre>";
?>

Вот как вы открываете и редактируете файл.

<?php
    $myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
    echo fread($myfile,filesize("webdictionary.txt"));
    fclose($myfile);
?>

Справочники по PHP

person magic-sudo    schedule 12.07.2015
comment
Я не хочу получать какой-либо текст с помощью этой команды, но я хочу открыть gedit с редактируемым файлом внутри, поэтому shell_exec, вероятно, неправильная команда. - person dryhay; 12.07.2015

Сначала убедитесь, что shell_exec включен в вашей конфигурации PHP (здесь) и что ваш Пользователь Apache имеет достаточно прав для выполнения приложений (здесь).

Кроме того, для Apache, чтобы запускать графические инструменты в системе, вы должны определить, какой дисплей он должен использовать; вы можете добавить эту строку в свои файлы запуска Apache:

export DISPLAY=:0.0

или вместо этого добавьте его в свой PHP-скрипт:

<?php
shell_exec("DISPLAY=:0; gedit filename.txt");
?>
person hatef    schedule 12.07.2015