Файлы конфигурации Bash, прочитанные в противоречии с 'ударом человека'

Решение проблемы включило бы понимание, почему это происходит. Необходимо запустить путем просмотра журналов, чтобы видеть, существуют ли какие-либо очевидные ошибки; начать /var/log/Xorg.0.log и lightdm журнал в /var/log/lightdm/lightdmlog.

Чтобы избежать необходимости делать трудное завершение работы, в следующий раз, это происходит, переключатель к консоли с CtrlAltF1 (или любой из ключей F_ между 1 и 6) и вход в систему, и перезапустите менеджера по оформлению с:

sudo service lightdm restart

Можно затем переключить назад на консоль это X (Ваш GUI), работает в с CtrlAltF7, где можно войти в рабочий стол Монетного двора.

0
10.08.2016, 15:52
1 ответ

Ну, для запуска не делает PHP shell_exec через bash в Вашем случае это делает его через sh. Это довольно очевидно из точного сообщения об ошибке. Я предполагаю, что этим управляет любая оболочка, указан в/etc/passwd для пользователя, которого веб-сервер выполняет как, и shell_exec не получает stderr, в сочетании с тем, что при выполнении PHP из командной строки, это просто выбывает к $ {SHELL}. При запуске как sh удар выключает много функций для лучше имитации поведения исходной оболочки sh. Определение источника .bashrc и .bash_profile почти наверняка среди тех, если ни по какой другой причине затем, потому что те файлы, вероятно, будут использовать определенный для удара синтаксис или расширения.

Я не действительно уверен в случае SSH, но судящий по плоскости $ подсказка, Вы могли бы очень хорошо пробегать sh туда, который аналогично объяснит поведение, которое Вы видите. Попробовать echo ${SHELL} видеть то, что в Вас действительно заскочили; это должно работать над всеми оболочками.

Тем не менее это кажется мне как действительно плохая идея зависеть от псевдонимов удара из Сценария PHP. Если то, что Вы хотите сделать, слишком длинно для установки приятно к shell_exec сам оператор (который должен только использоваться с большой осторожностью), делая функцию PHP для создания командной строки из параметров и называя, который является почти наверняка намного лучшим подходом, и он будет работать по существу, независимо от которого оболочка установлена, выбрана или как он настроен. С другой стороны, рассмотрите вызов внешнего файла сценария, который может быть записан в ударе и указать/bin/bash как его интерпретатор. Но затем Ваше приложение потребует, чтобы удар был установлен (который это, вероятно, уже делает, если это зависит от псевдонимов удара...).

3
28.01.2020, 02:28
  • 1
    Спасибо. Я на самом деле обрезал командную строку перед $ и отключенная другая несоответствующая информация. Проблема, с которой я имею дело, - то, что название исполняемого файла Python изменяется, в то время как системный администратор решает, какая версия Python должны быть установлены на сервере, таким образом, мне, возможно, придется измениться python кому: python3 кому: python3.0 или назад снова, или даже переносят вызовы к python2 с python для более старых сценариев. Я предполагаю, что они могли бы быть лучше из того, как обертка управляет в $HOME/bin затем, или это - также плохая практика? –  dotancohen 24.01.2013, 13:03
  • 2
    define(PYTHON_INTERPRETER, 'python3.0'); ... shell_exec(PYTHON_INTERPRETER . ' somefile.py'); казалось бы, был бы одной возможной альтернативой. define может быть помещен в некоторый конфигурационный файл, который является required каждым .php файлом, который должен назвать внешний сценарий Python. (тьфу) Или просто попросите, чтобы системный администратор поместил символьную ссылку в некоторое стабильное местоположение и указал, что это к любой версии Python, оказывается, установлено сегодня. (/usr/local/bin/python указывая /usr/bin/python сегодня, /usr/bin/pyhon3.0 завтра, и /usr/bin/python2 на следующий день после этого.) –  a CVn 24.01.2013, 16:59
  • 3
    АЙ! Если бы это был я, если бы они не хотят нанимать системного администратора, я убедил бы их получать реальную учетную запись веб-хостинга. Существует намного больше к поддержанию публично доступного веб-сервера, чем установка безотносительно версии Python, которому каждый чувствует себя подобно в данный момент, и, "какой бы ни студент в настоящее время на дежурстве", почти наверняка испортит его рано или поздно (вероятно, раньше, чем позже). В зависимости от того, где Вы расположены, должно быть возможно установить профессионально управляемый веб-хостинг, составляют несколько долларов США/месяц или поблизости. –  a CVn 24.01.2013, 17:08
  • 4
    Это - реальная учетная запись веб-хостинга, мой комментарий, вероятно, немного также высмеивал людей, работающих в бюджете webhost. Действительно, они только поддерживают Python 2.4, но они стараются изо всех сил устанавливать Python 3.0 для этого клиента. –  dotancohen 24.01.2013, 17:33
  • 5
    @dotancohen, почему они не устанавливают пакеты распределения для Python 3?! Если они действительно не понимают огромного объема работы, требуемого поддержать случайный набор программного обеспечения, скомпилированного от исходной работы (уже не говоря о безопасном), я предложил бы убежать с такой скоростью, как Ваши участки будут нести Вас. –  vonbrand 26.01.2013, 08:52

Теги

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