ошибка php-fpm, не могущая связывать сокет слушания для адреса '127.0.0.1:9003': Разрешение отклонило (13)

Самая большая проблема состоит в том, что Вы помещаете . перед названием сценария. . текущий каталог, который Вы вслепую предполагаете, что знаете, когда Вы настраиваете crontab запись. Нижняя строка, не используйте относительные пути в cron сценарии: дайте полный путь сценарию.

Кроме того, */1 является бессмысленно подробным. Это означает точно то же самое как *. Ваш сценарий работает каждую минуту каждого дня. (Это должно действительно работать так часто?)

4
22.01.2015, 15:55
2 ответа

, если вы Non-sudo пользователь, пытающийся связать сокеты, то да, это может быть проблема разрешений Отказ

Вы пытались запустить его как Sudo?:

sudo restart php-fpm

Я не вижу файл PID для PHP-FPM, редактировать / Добавить:

pid = /var/run/php-fpm.pid  #Change location to whatever you want, like /tmp
killall php-fpm
sudo restart php-fpm
1
27.01.2020, 20:49

Мне нравится gawk FPAT для этого

awk -vFPAT='[[:digit:]]+\\.' 'NF{$1=$1; print}' file
14. 20.
1. 1.
2. 2.
3. 3.
-121--90841-

@ evilsoup предложил хорошее решение, но он часто ломается.

Быстрое решение

Вот решение , которое никогда не ломается .

history | tail -2 | head -1 | xclip -selection clipboard

Просто выполните эту команду и скопируйте только что выполненную команду в буфер обмена.

В основном, это то, что он печатает вашу историю команд и принимает вторую последнюю команду и подает ее в буфер обмена (последняя команда - это сама по себе, поэтому выбирает вторую последнюю команду).

Пользовательская функция

Развиваясь на быстром решении, я написал небольшую функцию, которая довольно умна и скопирует последнюю использованную команду. Также можно указать числовые аргументы для копирования последней n-ой команды. Например, для копирования второй последней команды укажите 2 в качестве аргумента

myclipcopy () {

  if [ -z $1 ]
    then  # if no argument was provided then just copy the last used command
    history | tail -2 | head -1 | sed -re 's/[[:space:]]+[[:digit:]]+[[:space:]]+//g' | xclip -selection clipboard
    echo 'Anyways, the following command has been copied:'
    history | tail -2 | head -1| sed -re 's/[[:space:]]+[[:digit:]]+[[:space:]]+//g'

  else
    myindex=$(( $1+1 ))
    history | tail -$myindex | head -1 | sed -re 's/[[:space:]]+[[:digit:]]+[[:space:]]+//g' | xclip -selection clipboard
    echo "The following command has been copied:"
    history | tail -$myindex | head -1 | sed -re 's/[[:space:]]+[[:digit:]]+[[:space:]]+//g'
  fi

  #Delete this command itself from the history
  myhisnum=$(history | tail -1 | grep -oP '\s\d+\s' | grep -oP '\d+'); history -d $myhisnum
}

Копировать - вставьте вышеуказанную функцию в файл ~/.bashrc . Обратите внимание, что если поместить его в отдельный файл сценария bash и запустить сценарий, он не будет работать, так как команда history не сможет получить доступ к истории в этом случае.

Наконец, запустите его как

myclipcopy 3
# This copies the third-last command

Кроме того, одна классная функция, добавленная к этой функции, состоит в том, что она удаляет себя из истории после ее запуска. Это полезно, потому что тогда «обратный» индекс команд не изменяется.

-121--22637-

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

Если включен SELinux (который можно проверить, запустив getenforce - если ответ имеет значение Forced , что означает, что SELinux активен), существует два способа устранения проблемы.

Во-первых, легкий путь. Эта функция предназначена для простого отключения SELinux. Недостатком является то, что ваш сервер теперь гораздо более уязвим для компромиссов/взлома/атак. Если сервер становится менее защищенным, можно выполнить команду setenforce 0 . Также необходимо изменить конфигурацию, чтобы остановить ее повторную активацию после перезапуска; Для этого отредактируйте файл /etc/selinux/config и измените строку

SELINUX=enforcing

на

SELINUX=disabled

Second, secure пути . Необходимо изменить конфигурацию selinux, чтобы разрешить открытие этого порта. Так как SELinux очень сложная вещь - как это должно быть, чтобы делать то, что он делает - это требует немного работы. Однако существует один ярлык, который позволяет SELinux самому выяснить, какие новые разрешения ему необходимо разрешить.

Для этого необходимо установить для SELinux значение permissive вместо disabled . Это означает, что SELinux не будет применять свои правила, но он будет регистрировать информацию обо всем, что было бы остановлено, если бы он их применял. После запуска приложения можно передать содержимое журнала в audit2allow , что поможет создать необходимые правила:

grep php-fpm /var/log/audit/audit.log | audit2allow -m phpfpm > phpfpmlocal.tmp

Вы должны просмотреть файл phpfpmlocal.tmp , чтобы убедиться, что разрешения выглядят как OK. После этого и внесения любых изменений, которые кажутся вам разумными, повторно запустите audit2allow еще раз, чтобы построить модуль, и semodule , чтобы загрузить его

grep php-fpm /var/log/audit/audit.log | audit2allow -M phpfpmlocal
semodule -i phpfpmlocal.pp

После загрузки нового модуля можно снова включить принудительное исполнение.

Ниже приведена дополнительная информация о настройке SELinux .

8
27.01.2020, 20:49

Теги

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