За последние 24 часа нас посетили 18152 программиста и 1673 робота. Сейчас ищут 2146 программистов ...

Нулевой размер файла .htpasswd при записи из браузера

Тема в разделе "Настройка веб-сервера", создана пользователем Макс1, 16 янв 2016.

  1. Макс1

    Макс1 Активный пользователь

    С нами с:
    11 сен 2015
    Сообщения:
    6
    Симпатии:
    0
    Есть сервер на openSUSE Linux.

    Есть задача добавлять пользователей apache через браузер. Используется такой скрипт apacheadduser.exp

    Код (PHP):
    1. #!/usr/bin/expect
    2. set realm "Connection to server database"
    3. set digestFile "/etc/apache2/.htpasswd"
    4. set htdigest "/usr/bin/htdigest2"
    5. if  {[llength $argv] != 2} {puts "Usage apacheadduser <user> <password>\n"
    6. set user [ lindex $argv 0 ]
    7. set password [ lindex $argv 1 ]
    8. spawn $htdigest $digestFile $realm $user
    9. expect "New password:"
    10. send "$password\r"
    11. expect "Re-type new password:"
    12. send "$password\r"
    13. interact
    В браузере открывается php-файл с такой строчкой:

    Код (PHP):
    1. exec('/etc/apache2/apacheadduser.exp '.$user.' '.$password, $output); 
    Владелец и группа файла /etc/apache2/.htpasswd изменены на wwwrun:www, чтобы разрешить писать из браузера.

    С определенной вероятностью при первой попытке создания пользователя после открытия страницы в браузере вместо добавления строки с именем пользователя получается файл нулевого размера. Причем сначала строка записывается нормально, а затем файл приобретает нулевой размер. Запись в цикле, если пытаться несколько раз писать имя пользователя, пока файл имеет нулевой размер, не помогает, число неудачных попыток становится бесконечным. Но удачной чаще всего оказывается следующая попытка, если нажать кнопку в браузере следующий раз. В чем может быть причина, как ее определить, и что можно сделать?

    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.