Показаны сообщения с ярлыком php5. Показать все сообщения
Показаны сообщения с ярлыком php5. Показать все сообщения

пятница, 6 февраля 2009 г.

SUPHP и загрузка файла на сайт

Столкнулся с тем, что после загрузки на сайт файл недоступен для просмотра. Владельцем файлу назначается владелец вызываемого скрипта, но с правами доступа на чтение/запись только владельцу. В результате веб-сервер не может его прочитать. Пробовал поиграться с параметрами в «suphp.conf» — безрезультатно.
Решил проблему таким образом. Создал файл «/etc/php5/prepend.inc» и в «php.ini» путь к нему присвоил параметру «auto_prepend_file»

<?php
if (!empty($_FILES)) {
function __xxx4pre_fix_upload_umask(& $files) {
if (is_array($files)) {
foreach ($files AS & $file)
__xxx4pre_fix_upload_umask($file);
}
else {
if (is_uploaded_file($files))
chmod($files, 0644);
}
}

__xxx4pre_fix_upload_umask($_FILES);
}
Теперь у загруженных файлов права доступа будут принудительно меняться на «0644».

четверг, 8 мая 2008 г.

Обновление PHP5

Продолжаю исправлять свои давние ошибки :) На этот раз обновление php5 и его расширений там, где затерлась системная БД с записями об установленных из портов программах.

  1. Соберем php5.
    cd /usr/ports/lang/php5 && make all
    Остановим apache2
    /usr/local/etc/rc.d/apache2 stop
    Ставим php5
    make install
  2. Теперь установим расширения php5.
    Список расширений находится в файле /usr/local/etc/php/extensions.ini. Остается лишь поиск в портах и установка. Для этой цели написал маленький скрипт.
    #!/bin/sh
    grep -oE '=[a-z]+' /usr/local/etc/php/extensions.ini | \
    sed -E 's/^./php5-/' | \
    while read pkg;
    do {
    cd /usr/ports;
    cd `make quicksearch name="^$pkg-" | \
    grep -oE '/usr/ports/.+$'` && make install;
    } done;
    Сохраняем его под именем php5-ext-inst.sh и делаем исполняемым
    chmod +x php5-ext-inst.sh
    Выполняем скрипт.
  3. После установки расширений запускаем apache2 и радуемся жизни :)
    /usr/local/etc/rc.d/apache2 start