Я столкнулся с странной проблемой. У меня есть настройка кнопки, когда при нажатии на нее запускается сценарий оболочки, который я создал с помощью PHP. Сценарий оболочки - две команды curl.Запустить сценарий оболочки с использованием PHP
curl -H "Accept: application/xml" "http://blah/blah" > /tmp/listofchannels.xml
curl -H "Accept: application/xml" "http://blah/blah" > /tmp/listofnodes.xml
echo "Done!"
Я использовал shell_exec()
, exec()
и system()
запустить этот скрипт с PHP и работает успешно. НО он не перенаправляет вывод на файлы /tmp/listofchannels.xml
и /tmp/listofnodes.xml
.
Я использовал tail
в журналах ошибок httpd, и он показывает, как закручиваются кудри. Я даже увижу, что Done!
появляется на моей веб-странице при использовании system()
, но он не будет создавать файлы.
Если я запускаю скрипт сам из командной строки, он работает полностью. Файлы создаются, но только если я запускаю скрипт из командной строки сам, а не используя код PHP.
Есть ли у кого-нибудь идеи, почему?
Я думал, что это была проблема с разрешениями, но я не вижу ошибки, заявляя, что у меня нет разрешения.
Любая помощь будет замечательной!
Update:
Я нашел и устранил эту проблему. Это был SElinux. Возможно, я должен был упомянуть, что делал это на CentOS7. То, что я сделал, это создать новую папку и сделать владельца apache, после чего разрешить apache писать.
chown apache:apache /folder
sudo chcon -t httpd_sys_rw_content_t /folder
Почему бы не использовать php curl? –
Я имею в виду, я думаю, мог. Мне просто интересно, почему это не работает ... Я имею в виду, что он запускает скрипт, так почему бы не создать два файла ... Я просто хочу понять, что происходит сейчас. – iamcyruss
Я бы поставил на вопрос с разрешением –