У меня есть программа, которая выводит данные в командной строке.
MyProgram -d «02/02016/12: 00-03 / 02/2016/12: 00»
Я просто пытаюсь отобразить результаты откомпилированной c-программы на Linux на веб-странице. Есть дополнительные флаги помимо файла (-f имя файла) и даты (-d «диапазон времени и даты»). Для программы доступны другие флаги команд оболочки, но они не влияют на формат отображения самого текста.
Это приводит к выводу в формате командной строки, подобному следующему. Фактические результаты здесь не имеют большого значения. Он отображает список или записи в формате, аналогичном следующему на серверной части.
Я пытаюсь отобразить результаты ниже на веб-странице PHP переднего плана.
------------------------------------------------------------------------------------
<record_id_number_here> <date_stamp_tex><someflag_value><event_type_number>
<Some event status text information>
-----------------------------------------------------------------------------------
Вещи, которые я пробовал, см. Ниже в разделе test.PHP. Я ищу только один рабочий путь.
test.php
<?php
echo "ran as user:".exec("whoami");
echo "test1<br />";
echo exec("MyProgram -f TestLogBinaryFileDate");
echo "test2<br />";
echo system("MyProgram -f TestLogBinaryFileDate");
echo "test3<br />";
echo popen("MyProgram -f TestLogBinaryFileDate");
echo "test4<br />";
echo passthru("MyProgram -f TestLogBinaryFileDate");
echo "tests calls complete";
?>
Каждая попытка получить результаты от каждой из этих функций не мешала PHP продолжать работу и не отображала текст записи данных, который должен был быть.
MyProgram Я даже пытался установить пользователя Apache в качестве владельца приложения командной строки, скомпилированного в файл, и даже переместил приложение в корневой каталог веб-сайта, где находится веб-страница test.php.
Среды Linux (Fedora 22 или Red Hat Linux в будущем), Mariadb, PHP 5.6.8
Я не сомневаюсь, что буду обновлять это с большей информацией о том, что работало и не работало.
Я вижу посты, в которых говорится о директории safemode, это не работает, так как safemode PHP был удален в 5.4 и устарел в 5.3, поэтому безопасный режим не должен быть проблемой.
http://php.net/manual/en/function.shell-exec.php
shell_exec — выполнить команду через оболочку и вернуть весь вывод в виде строки
Других решений пока нет …