Проблемы со сценарием bash, содержащим команду exigrep, при вызове с веб-страницы PHP

Linux Mint 18 использует systemdв качестве системы инициализации. Тем не менее, вы можете ввести команду, которая изменяет уровень запуска по умолчанию на одного пользователя -, где-то это называется режимом «спасения», и он численно равен 1. Команда:

systemctl set-default rescue.target

Вы также можете создать это без части '.target'.

Проверьте также другие уровни выполнения:

   ┌─────────┬───────────────────┐
   │Runlevel │ Target            │
   ├─────────┼───────────────────┤
   │0        │ poweroff.target   │
   ├─────────┼───────────────────┤
   │1        │ rescue.target     │
   ├─────────┼───────────────────┤
   │2, 3, 4  │ multi-user.target │
   ├─────────┼───────────────────┤
   │5        │ graphical.target  │
   ├─────────┼───────────────────┤
   │6        │ reboot.target     │
   └─────────┴───────────────────┘
1
17.11.2020, 03:27
1 ответ

Преследуя неспособность сценария PHP, называемого bash, запускать/предоставлять результаты exigrep, я скопировал файл exigrep, расположенный в /usr/sbin/exigrep, в каталог локальной учетной записи, содержащий мой файл PHP. Когда я изменил вызовы exigrep сценария bash на /home/account/public _html/cgi -bin/exigrep, извлечение файла журнала работало правильно.

По крайней мере, у меня есть обходной путь.

Я пришел к выводу, что моя первоначальная проблема связана не с Linux, а с PHP. Похоже, что по какой-то причине PHP не может выполнить системную копию exigrep. Возможно, дело в том, что это сценарий Pearl.

Для дальнейшего изучения этого вопроса я сделал простой вызов exigrep напрямую из PHP (без участия сценария bash):

<?php
$output = shell_exec('exigrep email /var/log/exim_mainlog');
echo "<pre>$output</pre>";
?>

, который не работал.

Однако, когда вызывалась копия exigrep, расположенная в моей учетной записи, она работала корректно:

<?php
$output = shell_exec('/home/account/public_html/cgi-bin/exigrep email /var/log/exim_mainlog');
echo "<pre>$output</pre>";
?>

Было бы полезно лучше понять это, поскольку, если все Perl-скрипты будут вызывать проблемы таким образом, нужно будет скопировать все необходимые в локальный каталог учетной записи. Естественно, было бы лучше изменить все, что мешает сценарию exigrep выполняться в его обычном «доме».

Это не очень надежное решение, а скорее обходной путь, который позволяет мне получать результаты и проводить расследования.

0
18.03.2021, 22:49

Теги

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