Как вставить текст во вновь созданный файл с помощью сценария оболочки из PHP?

#php

#php

Вопрос:

я использовал PHP site для запуска сценария оболочки, и он создал желаемый файл имени «result.txt » внутри /opt/xampp/htdocs. Однако result.txt является полностью пустым, когда предполагается, что он должен иметь выходные значения из сценария оболочки. Попробовал на терминале, result.txt создается на рабочем столе, и выходные данные находятся там. Пробовал на PHP, result.txt создается, но внутри нет абсолютно никаких выходных данных.

Это длинный скрипт, поэтому вот первые несколько строк:

 # creates result.txt
touch result.txt

##makes the .txt read only
chmod 444 result.txt 


clear


###################################################
# This option audits the password and             #
# shadow files on the system                      #
###################################################

##option 2.1.1
echo -e "=========================================================================================" >> result.txt
echo "                                  SHADOWED PASSWORD CHECK                                   " >> result.txt
echo "=========================================================================================" >> result.txt
  

Кто-нибудь?

Спасибо.

Комментарии:

1. Покажите код, который вы используете для запуска сценария оболочки

2. <?php exec(‘/Desktop/test.sh’); ?> Я полный новичок в PHP

3. Что содержит сценарий оболочки?

4. Он содержит базовые коды аудита ИТ-системы. Он создает файл с именем «result.txt » и отправляйте туда каждый тестовый вывод в одном скрипте.

5. Было бы полезно их просмотреть — вызов exec() в порядке, единственное отличие от его запуска из командной строки обычно заключается в том, что PHP запускается под другим пользователем.

Ответ №1:

Во-первых, совершенно необязательно перенаправлять вывод каждого эхо-вызова — используйте это в начале вашего сценария оболочки, чтобы перенаправить стандартный вывод в ваш выходной файл.

 exec amp;> results.txt
  

Во-вторых, ваш chmod в 444 не оставит файл доступным для записи пользователем Apache / PHP — я бы выполнил это в самом конце вашего скрипта, если это вообще необходимо.

Ответ №2:

Сначала попробуйте изменить рабочий каталог, используя chdir($folder).

 <?php
chdir("/testfolder/");
exec("./script.sh");
?>
  

Но почему бы не написать скрипт как php? Такие вещи, как touch, chmod и любая другая команда, доступная в оболочке unix, легко доступны в php.