По поводу popen - это вопрос еще тот
Вот что пишет man:
</span><table border="0" align="center" width="95%" cellpadding="3" cellspacing="1"><tr><td>
Цитата </td></tr><tr><td id="QUOTE">
Historically, popen() was implemented with a unidirectional pipe; hence many implementations of popen() only allow the type argument to specify reading or writing, not both.[/QUOTE]<span id='postcolor'>
Соответственно работать будет не для всех реализаций и платформ. Отсюда и предупреждение разработчиков php
</span><table border="0" align="center" width="95%" cellpadding="3" cellspacing="1"><tr><td>
Цитата </td></tr><tr><td id="QUOTE">Note: If you're looking for bi-directional support (two-way), use proc_open(). [/QUOTE]<span id='postcolor'>
Но proc_open это для php 4.3.0
А safe_mode_exec_dir должен указывать на директорию откуда можно запускать программы.
Насколько я помню (когда копал исходники) там если пути к программе нет, то тупо подставляется путь safe_mode_exec_dir