php 3.3.5 и загрузка файлов

Проблемы с установкой, настройкой и работой системных и сетевых программ.

Модераторы: GRooVE, alexco

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
ss25
мл. сержант
Сообщения: 81
Зарегистрирован: 2009-06-18 23:34:09

php 3.3.5 и загрузка файлов

Непрочитанное сообщение ss25 » 2011-03-08 19:00:02

При загрузке файлов на сервер через пхп-скрипт файлы создаются с права 0600. Соответственно апач не может к ним достучатся.

Код: Выделить всё

-rw-------  1 ss25  www  687616  8 мар 17:15 advapi32.dll
-rwxr-x---  1 ss25  www      47  7 мар 20:19 index.html
-rwxr-x---  1 ss25  www      20  7 мар 22:16 info.php
-rwxr-x---  1 ss25  www     333  7 мар 22:51 upload.html
-rwxr-x---  1 ss25  www     766  7 мар 22:52 upload.php
Фс смонтирована следующим образом

Код: Выделить всё

[root@bsd /]# mount
/dev/ad0s1a on / (ufs, local)
devfs on /dev (devfs, local, multilabel)
/dev/ad0s1d on /tmp (ufs, local, soft-updates)
/dev/ad0s1h on /usr (ufs, local, soft-updates)
/dev/ad0s1e on /var (ufs, local, soft-updates)
/dev/ad0s1f on /var/db (ufs, local, soft-updates)
/dev/ad0s1g on /home (ufs, local, noexec, suiddir, soft-updates)
Создаваемый файл должен бы наследовать uid/gid родителя но он этого не делает почемуто.

Полез в исходники пхп нашел в файле php_open_temporary_file.c строка 160
Судя по всему этот файл нужно немного поправить чтобы создавались файлы с требуемыми правами и пересобрать пхп заново.

Код: Выделить всё

#ifdef PHP_WIN32

        if (GetTempFileName(new_state.cwd, pfx, 0, opened_path)) {
                /* Some versions of windows set the temp file to be read-only,
                 * which means that opening it will fail... */
                VCWD_CHMOD(opened_path, 0600);
                fd = VCWD_OPEN_MODE(opened_path, open_flags, 0600);
        }

#elif defined(HAVE_MKSTEMP)
        fd = mkstemp(opened_path);
#else
        if (mktemp(opened_path)) {
                fd = VCWD_OPEN(opened_path, open_flags);
        }
#endif
Кто наступал на такие грабли поделитесь решением? Сейчас поправил на 640 права и пересобираю пхп.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/


Аватара пользователя
ss25
мл. сержант
Сообщения: 81
Зарегистрирован: 2009-06-18 23:34:09

Re: php 3.3.5 и загрузка файлов

Непрочитанное сообщение ss25 » 2011-03-08 19:22:45

Гость писал(а):а кто такой ss25 и почему он не апач?
Пользователь. php-скрипты через suPHP работают.
Параметры виртуального хоста.

Код: Выделить всё

<VirtualHost *:80>
    ServerAdmin webmaster@ss25.net.ru
    DocumentRoot "/home/ss25/sites/ss25.net.ru/htdocs"
    ServerName ss25.net.ru
    ServerAlias www.ss25.net.ru
    ErrorLog "/home/ss25/sites/ss25.net.ru/logs/error.log"
    CustomLog "/home/ss25/sites/ss25.net.ru/logs/access.log" common
    DirectoryIndex index.html index.php

   <Directory "/home/ss25/sites/ss25.net.ru/htdocs">
     Options Indexes Includes FollowSymLinks MultiViews
     AllowOverride All
     Order allow,deny
     Allow from all
   </Directory>

    AddType application/x-httpd-php .php
    suPHP_Engine on

    suPHP_UserGroup ss25 www
    suPHP_AddHandler application/x-httpd-php
    suPHP_ConfigPath "/home/ss25/sites/ss25.net.ru/cgi-bin"
</VirtualHost>


После правок в сорцах php при сборке выпала ошибка (

Код: Выделить всё

/usr/ports/lang/php5/work/php-5.3.5/main/php_open_temporary_file.c: In function 'php_do_open_temporary_file':
/usr/ports/lang/php5/work/php-5.3.5/main/php_open_temporary_file.c:148: error: 'open_flags' undeclared (first use in this function)
/usr/ports/lang/php5/work/php-5.3.5/main/php_open_temporary_file.c:148: error: (Each undeclared identifier is reported only once
/usr/ports/lang/php5/work/php-5.3.5/main/php_open_temporary_file.c:148: error: for each function it appears in.)
*** Error code 1
1 error
*** Error code 1

Stop in /usr/ports/lang/php5.
*** Error code 1

Stop in /usr/ports/lang/php5

Аватара пользователя
ss25
мл. сержант
Сообщения: 81
Зарегистрирован: 2009-06-18 23:34:09

Re: php 3.3.5 и загрузка файлов

Непрочитанное сообщение ss25 » 2011-03-08 19:26:17

Вообще я хочу сделать чтобы виртуальные хосты запускались под uid/gid пользователя.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35462
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: php 3.3.5 и загрузка файлов

Непрочитанное сообщение Alex Keda » 2011-03-08 21:41:08

mpm-itk
Убей их всех! Бог потом рассортирует...

Аватара пользователя
ss25
мл. сержант
Сообщения: 81
Зарегистрирован: 2009-06-18 23:34:09

Re: php 3.3.5 и загрузка файлов

Непрочитанное сообщение ss25 » 2011-03-08 22:25:55

Благодарю. погуглил настроил. но смущает вывод в пхпинфо User/Group www(80)/80.
Но в топе видно что процессы апача от нужного пользователя стартуют.

п.с.
И заметно пошустрее suPHP бегает и процессов меньше создает.
Вложения
1.JPG

Аватара пользователя
ss25
мл. сержант
Сообщения: 81
Зарегистрирован: 2009-06-18 23:34:09

Re: php 3.3.5 и загрузка файлов

Непрочитанное сообщение ss25 » 2011-03-08 22:33:23

И при загрузке через скрипт права опять не так как надо выставляются ((

Код: Выделить всё

[root@bsd /home/ss25/sites/ss25.net.ru/htdocs]# ls -l
total 136
-rw-r--r--  1 ss25  ss25  130560  8 мар 19:16 acledit.dll
-rwxr-x---  1 ss25  ss25      47  7 мар 20:19 index.html
-rwxr-x---  1 ss25  ss25      20  7 мар 22:16 info.php
-rwxr-x---  1 ss25  ss25     333  7 мар 22:51 upload.html
-rwxr-x---  1 ss25  ss25     766  7 мар 22:52 upload.php