The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Запуск httpd из шелл под root'ом и из автозагрузки дают разн..."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"Запуск httpd из шелл под root'ом и из автозагрузки дают разн..."  
Сообщение от Petja email(??) on 30-Окт-07, 11:06 
Проблема в том, что у меня в /etc/profile прописано много локалей, необходимых для работы переводчика. Так вот. При логине в шелле под root или www (для обоих пользователей у меня прописаны все права и шелл bash), все прописанные локали поддершиваются. Если я из под шелл запускаю apache: apachectl stop; apachectl start, то локали поддерживаются и для функции exec или system (PHP). Если я перезагружаю apache (apachectl restart) или apache загружается из автозагрузки, то локали перестают работать из под exec или system. Для всех скриптов (автозагрузка, apachectl) прописал вместо #!/bin/sh - #!/usr/local/bin/bash
Всеравно не помогает... Подскажите, плз - как заставить чтобы шелл запущенный через web - также поддерживал необходимые env переменные?
Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Запуск httpd из шелл под root'ом и из автозагрузки дают разн..."  
Сообщение от newser (ok) on 30-Окт-07, 11:51 
>[оверквотинг удален]
>для работы переводчика. Так вот. При логине в шелле под root
>или www (для обоих пользователей у меня прописаны все права и
>шелл bash), все прописанные локали поддершиваются. Если я из под шелл
>запускаю apache: apachectl stop; apachectl start, то локали поддерживаются и для
>функции exec или system (PHP). Если я перезагружаю apache (apachectl restart)
>или apache загружается из автозагрузки, то локали перестают работать из под
>exec или system. Для всех скриптов (автозагрузка, apachectl) прописал вместо #!/bin/sh
>- #!/usr/local/bin/bash
>Всеравно не помогает... Подскажите, плз - как заставить чтобы шелл запущенный через
>web - также поддерживал необходимые env переменные?

Вы в httpd.conf прописывать переменные окружения не пробовали?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Запуск httpd из шелл под root'ом и из автозагрузки дают разн..."  
Сообщение от Petja email(??) on 30-Окт-07, 19:42 
>[оверквотинг удален]
>>шелл bash), все прописанные локали поддершиваются. Если я из под шелл
>>запускаю apache: apachectl stop; apachectl start, то локали поддерживаются и для
>>функции exec или system (PHP). Если я перезагружаю apache (apachectl restart)
>>или apache загружается из автозагрузки, то локали перестают работать из под
>>exec или system. Для всех скриптов (автозагрузка, apachectl) прописал вместо #!/bin/sh
>>- #!/usr/local/bin/bash
>>Всеравно не помогает... Подскажите, плз - как заставить чтобы шелл запущенный через
>>web - также поддерживал необходимые env переменные?
>
>Вы в httpd.conf прописывать переменные окружения не пробовали?

Спасибо! Наконец-то заработало, я щщаслив, спасибо! :-)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Запуск httpd из шелл под root'ом и из автозагрузки дают разн..."  
Сообщение от Petja email(??) on 30-Окт-07, 22:14 
>[оверквотинг удален]
>>>функции exec или system (PHP). Если я перезагружаю apache (apachectl restart)
>>>или apache загружается из автозагрузки, то локали перестают работать из под
>>>exec или system. Для всех скриптов (автозагрузка, apachectl) прописал вместо #!/bin/sh
>>>- #!/usr/local/bin/bash
>>>Всеравно не помогает... Подскажите, плз - как заставить чтобы шелл запущенный через
>>>web - также поддерживал необходимые env переменные?
>>
>>Вы в httpd.conf прописывать переменные окружения не пробовали?
>
>Спасибо! Наконец-то заработало, я щщаслив, спасибо! :-)

Неа, показалось, всеравно не работает!
Завтра такуюже новую тему открою :-(

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Запуск httpd из шелл под root'ом и из автозагрузки дают разн..."  
Сообщение от angra (ok) on 30-Окт-07, 15:27 
Зачем такой изврат? Установкой Env из под апача конечно можно добится того что вам надо, но зачем? Сдается мне вы двигаетесь в очень неправильном направлении, может еще не поздно остановится и сделать все по уму?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Запуск httpd из шелл под root'ом и из автозагрузки дают разн..."  
Сообщение от Petja email(??) on 30-Окт-07, 16:35 
>Зачем такой изврат? Установкой Env из под апача конечно можно добится того
>что вам надо, но зачем? Сдается мне вы двигаетесь в очень
>неправильном направлении, может еще не поздно остановится и сделать все по
>уму?

Вот я собственно и спрашиваю - как по уму сделать?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Запуск httpd из шелл под root'ом и из автозагрузки дают разн..."  
Сообщение от konst email(??) on 30-Окт-07, 22:51 
>>Зачем такой изврат? Установкой Env из под апача конечно можно добится того
>>что вам надо, но зачем? Сдается мне вы двигаетесь в очень
>>неправильном направлении, может еще не поздно остановится и сделать все по
>>уму?
>
>Вот я собственно и спрашиваю - как по уму сделать?

В php/perl скриптах можно устанавлмвать локаль. В perl - setlocale. В php - не помню..

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Запуск httpd из шелл под root'ом и из автозагрузки дают разн..."  
Сообщение от Petja email(??) on 31-Окт-07, 13:45 
>>>Зачем такой изврат? Установкой Env из под апача конечно можно добится того
>>>что вам надо, но зачем? Сдается мне вы двигаетесь в очень
>>>неправильном направлении, может еще не поздно остановится и сделать все по
>>>уму?
>>
>>Вот я собственно и спрашиваю - как по уму сделать?
>
>В php/perl скриптах можно устанавлмвать локаль. В perl - setlocale. В php
>- не помню..

Дело в том, что у меня много локалей - и эти локали нужны не для php, а для того чтобы шелл понимал язык.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Запуск httpd из шелл под root'ом и из автозагрузки дают разн..."  
Сообщение от angra (ok) on 31-Окт-07, 02:36 
>Вот я собственно и спрашиваю - как по уму сделать?

Тогда сформулируйте изначальную задачу. То есть для какой цели вы хотите менять локаль, что вы берете из локали, почему без смены локали скрипты не работают.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Запуск httpd из шелл под root'ом и из автозагрузки дают разн..."  
Сообщение от Petja email(??) on 31-Окт-07, 13:44 
>>Вот я собственно и спрашиваю - как по уму сделать?
>
>Тогда сформулируйте изначальную задачу. То есть для какой цели вы хотите менять
>локаль, что вы берете из локали, почему без смены локали скрипты
>не работают.

У меня установлен шелл переаодчик
Он берет из скрипта php (из формы) текст (иероглифы, русские буквы, испанские).
Далее через exec - передает текст в коммандную строку - если шелл локаль не видит - то получаются знаки вопросов, т.е. в переводчик передается все правильно - он понимает utf-8, а при выходе (уже переведенный текст) в знаках вопросов - т.е. он тоже из шелл забирается - а шелл не понимает какая локаль.
Так вот понимает локаль - в первом случае - если я из под рута запускаю апач и не понимает, если апач сам запускается - из автозагрузки.
С юзерами я в первом посте все подробно описал...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "Запуск httpd из шелл под root'ом и из автозагрузки дают разн..."  
Сообщение от angra (ok) on 31-Окт-07, 15:49 
отдавайте команду предварив ее export LC_ALL="ваша локаль". Например
exec('export LC_ALL=ru_RU.CP1251; mytranslator ...')
Также вы можете попробовать менять хеш среды. %ENV в перле, в php не помню, посмотрите доку на тему super globals. И наконец зная в какой кодировке идет возврат мы можете просто перекодировать вывод в самом php(при конвертации юникод-однобайтные могут быть проблемы, но если у вас юникод, то нафига все остальные кодировки)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "Запуск httpd из шелл под root'ом и из автозагрузки дают разн..."  
Сообщение от Petja email(??) on 31-Окт-07, 17:14 
>в какой кодировке идет возврат мы можете просто перекодировать вывод в
>самом php

Вывод идет из шелла, который не понимает локаль и выводит вопросы - так что в самом PHP не получится из вопросов что-либо получить.

>(при конвертации юникод-однобайтные могут быть проблемы, но если у вас
>юникод, то нафига все остальные кодировки)

Юникод, я его поэтому и взял - но даже юникод не поддерживается шеллом.
Пробовал локали прописывать перед коммандой. Это соувсем не то, проблема в самом экземпляре шелла - который вызывается екзеком и ничего не понимает...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

12. "Запуск httpd из шелл под root'ом и из автозагрузки дают разн..."  
Сообщение от Petja email(??) on 31-Окт-07, 17:16 
>[оверквотинг удален]
>так что в самом PHP не получится из вопросов что-либо получить.
>
>
>>(при конвертации юникод-однобайтные могут быть проблемы, но если у вас
>>юникод, то нафига все остальные кодировки)
>
>Юникод, я его поэтому и взял - но даже юникод не поддерживается
>шеллом.
>Пробовал локали прописывать перед коммандой. Это соувсем не то, проблема в самом
>экземпляре шелла - который вызывается екзеком и ничего не понимает...

Точнее пробовал прописывать как вы сказали: exec('export LC_ALL=ru_RU.CP1251; mytranslator ...') - не помогает.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

13. "Запуск httpd из шелл под root'ом и из автозагрузки дают разн..."  
Сообщение от angra (ok) on 01-Ноя-07, 07:58 
>Точнее пробовал прописывать как вы сказали: exec('export LC_ALL=ru_RU.CP1251; mytranslator ...') - не помогает.

надеюсь вы не буквально так написали, а адаптировали под ваши нужды. export LC_ALL= повзоляет выставить локаль для всех команд запущенных в том же экземпляре шелла, а ; является разделителем комманд в шелле. То есть перводчик должен был получить правильную установку локали.

Давно не работал с php и не помню уже как работает в нем system/exec и как у него вообще с поддержкой unicode. Как вариант можно попробовать
1. перенаправлять вывод переводчика в файл, а потом его читать средствами php
2. перенаправлять вывод переводчика в iconv и указывать из какой кодировки в какую сконвертить


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру