Есть сервер на openSUSE Linux. Есть задача добавлять пользователей apache через браузер. Используется такой скрипт apacheadduser.exp Код (PHP): #!/usr/bin/expect set realm "Connection to server database" set digestFile "/etc/apache2/.htpasswd" set htdigest "/usr/bin/htdigest2" if {[llength $argv] != 2} {puts "Usage apacheadduser <user> <password>\n" exit} set user [ lindex $argv 0 ] set password [ lindex $argv 1 ] spawn $htdigest $digestFile $realm $user expect "New password:" send "$password\r" expect "Re-type new password:" send "$password\r" interact В браузере открывается php-файл с такой строчкой: Код (PHP): 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 и т. д.