در ادامه بحث اجرای کدهای php با کابری به غیراز کاربر www-data که توی دبیان کاربر آپاچی است (توی redhat کاربر apache) رسیدم به apache2-mpm-itk . علت اینکه ناچار شدم به این بسته رو بیارم اینه که هر کدام از دو راه حل گذشته که گفتم (suphpو suexec) مشکلاتی را برای من ایجاد کردند و محدودیت هایی اعمال شد. در مورد آخر یعنی suphp مشکل اینجا بود که با zend کار نمی کرد و خوب تنها انتخابی که برای من باقی مونده apache2-mpm-itk است.
بسته های مورد نیاز
aptitude install apache2-mpm-itk libapache2-mod-php5
ماژول های مورد نیاز
من ماژولی را فعال نکردم . فکر نمی کنم نیاز به چیز اضافه تری باشد.
پیکربندی یک vhost
با تعریف یک virtual host ساده شروع کنید. تنها گزینه اضافه تر AssignUserID behrad behrad است ، که به وسیله آن کاربری که آپاچی با مجوز آن اجرا می شود را تعریف می کنید. پس از آن سرویس را restart کنید و تنظیمات انجام شده را آزمایش کنید.
<VirtualHost *:80>
ServerAdmin webmaster@linuxmotto.local
ServerName linuxmotto.local
DocumentRoot /home/behrad/public_html/
DirectoryIndex index.php index.html
ErrorLog /home/behrad/log/error.log
CustomLog /home/behrad/log/access.log combinedAssignUserID behrad behrad
<Directory /home/behrad/public_html/>
Options -Indexes FollowSymLinks -MultiViews
AllowOverride all
Order allow,deny
Allow from all
</Directory></VirtualHost>
تست صحت عملکرد تنظیمات انجام شده
یه فایل itk.php در شاخه public_html ساختم و مقادیر زیر را درون آن ریختم و داخل مرورگر http://linuxmotto.loca/itk.php را صدا زدم.
<?php
$file=’/tmp/itk_test1′;
touch($file);
$stat_arr=stat($file);
echo “File is: $file, UID is: $stat_arr[4], GID is: $stat_arr[5]\n”;
unlink($file);
?>
پس از فراخوانی در مرورگر در صورتی که uid و gid کاربر شما نمایش داده شد. تنظیمات درست است.
معایب
مشکل این بسته در ایجاد vhost در تعداد بالا است. چرا که برای هر کاربر باید گزینه مورد نظر برای تعریف user و group اضافه شود. به همین علت برای میزبان های اشتراکی با تعداد سایت بالا شاید زیاد مناسب نباشد.
منابع
http://devzone.zend.com/article/4779