почему php не может видеть файлы / tmp

Where will the 2nd grep get it's input from when the 1st grep fails?
Coz, grep1 consumes all the stdin with nothing left for grep2.In the
case of grep1 succeeding, grep2 never runs so is not an issue.

We may rig it up like the following to achieve what you want:

#/bin/sh
service php5-fpm status |
grep Active |
cut -d':' -f2- | tee /tmp/log |
GREP_COLOR='1;32' grep --color=always -E " active \(.*\)" - ||
GREP_COLOR='1;31' grep --color=always -E ".* \(.*\)") /tmp/log
5
16.02.2017, 01:16
2 ответа

  

..
всегда показывает только:. и .. папки и ничего больше в браузере. ..
В чем причина этого ???

Это все system () функция предназначен для выполнения - он возвращает только последнюю строку вывода команды оболочки.
Тогда почему существует команда, которая дает только одну бесполезную строку вывода? возможно, потому что system () позволяет вам захватить код выхода процесса оболочки (если вы передадите $ return_var в качестве второго аргумента), тогда как shell_exec - что делает дает вам весь вывод оболочки, не дает кода выхода!

Итак, если вам нужен весь вывод И код выхода, вы можете использовать exec () , но exec вызывает затруднения, потому что полный вывод доступен только через ссылочный массив $ output , который затем нужно просмотреть в цикле, чтобы увидеть результат.

Кроме того, поскольку вы играете в / tmp , вы должны знать, что более новые версии PHP-FPM, использующие systemd для управления демоном php-fpm, передают параметр который блокирует выполнение файлов php от выхода из tmp.
У меня на ноутбуке работает php 7.0.1, но затем я установил 7.1.1 и обнаружил, что теперь они встраивают эту маленькую директиву

PrivateTmp=true

в systemd служебный файл.вам нужно установить для него значение false, если вы хотите запускать скрипты php из / tmp
для получения дополнительной информации по этой конкретной проблеме
https://serverfault.com/questions/614781/php-script-cant -access-tmp-folder

1
27.01.2020, 20:40

Я использую Ubuntu 18.04, и /usr/lib/systemd не содержит никаких служб для http или apache2. Однако я выполнил следующую команду:

sudo find / -mount -type f -exec grep -e "PrivateTmp" '{}' ';' -print

и нашел в /lib/systemd/apache2.service PrivateTmp=true . Изменение true на false и выполнение

systemctl daemon-restart
systemctl restart apache2

исправил проблему.

4
27.01.2020, 20:40

Теги

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