Не могу установить плагин - open_basedir restriction in effect

Автор колбаскин, 24 марта 2024, 15:15:30

« назад - далее »

0 Пользователи и 2 гостей просматривают эту тему.

колбаскин

SMF 2.1.4
PHP 8.2.16 (cli) (built: Mar  7 2024 08:55:56) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.16, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.16, Copyright (c), by Zend Technologies
Hestia control panel

2: is_writable(): open_basedir restriction in effect. File(/Packages/temp) is not within the allowed path(s): (/home/admin/.composer:/home/admin/web/si.org.ua/public_html:/home/admin/web/si.org.ua/private:/home/admin/web/si.org.ua/public_shtml:/home/admin/tmp:/tmp:/var/www/html:/bin:/usr/bin:/usr/local/bin:/usr/share:/opt)
Права на все файлы и директории 777
Пробовал давать права для 500:500, как это сделано контрольной панелью, пробовал admin и www-data users

php работает под пользователем admin
nginx и Apache работает под пользователем  www-data

Стоит версия php 8.2, пробовал менять на php 7.3 или php 7.4 не помогло
Плагин загружается в папку /Packages

если создать в ней папку tmp, то туда загружаются файлы. Сама папка не создаётся автоматом.

функция function public function chmod($ftp_file, $chmod)
завершается с ошибкой
stops with error bad_file smf 550 SITE CHMOD command failed

Куда копать, непонятно. 

Garik

Копать в сторону open_basedir в настройках сервера

колбаскин

Цитата: Garik от 25 марта 2024, 11:27:14Копать в сторону open_basedir в настройках сервера

open_basedir = /home/admin/.composer:/home/admin/web/si.org.ua/public_html:/home/admin/web/si.org.ua/private:/home/admin/web/si.org.ua/public_shtml:/home/admin/tmp:/tmp:/var/www/html:/bin:/usr/bin:/usr/local/bin:/usr/share:/opt:/home/admin/web/si.org.ua/public_html/Packages

или  ;open_basedir проблему не решает.
И я так понимаю это директории где можно выполнять php скрипты. А у меня проблема, что не может создать каталог tmp, и правильно присвоить и проверить права.

Я загружаю модуль и он появляется в каталоге Packages
Вам недоступны вложения в этом разделе.
Но установить не даёт.
Вам недоступны вложения в этом разделе.


Вам недоступны вложения в этом разделе.

Вам недоступны вложения в этом разделе.
Если я руками создам каталог temp и дам права на запись, то туда копирует установочные файлы модуля
Вам недоступны вложения в этом разделе.
Но дальше ошибка.
Вам недоступны вложения в этом разделе.

в  Class-Package.php

public function chmod($ftp_file, $chmod)
{

if (!is_resource($this->connection))
return false;

if ($ftp_file == '')
$ftp_file = '.';

// Do we have a file or a dir?
$is_dir = is_dir($ftp_file);
$is_writable = false;

// Set different modes.
$chmod_values = $is_dir ? array(0750, 0755, 0775, 0777) : array(0644, 0664, 0666);

foreach ($chmod_values as $val)
{
// If it's writable, break out of the loop.

var_dump($ftp_file);
var_dump(is_writable($ftp_file));
var_dump(decoct($val));

Тут я получаю


string(22) "/Packages/temp/LICENSE" bool(false) string(3) "644" string(22) "/Packages/temp/LICENSE" bool(false) string(3) "644" string(36) "/Packages/temp/modifications-1.1.xml" bool(false)

Самое интересное что скрипт ждёт права на файлы 644, а получает 666 и в итоге отбивает  false

Garik

Отключить временно open_basedir
Выставить правильно атрибуты файлов и папок. 
Проверить. 
И вы папку tmp не от root создаёте?

колбаскин

Цитата: Garik от 27 марта 2024, 07:15:58Отключить временно open_basedir
Это пробовал и добавлял в путь /Packages
Есть уже фикс под php 8, но проблему не решило

Цитата: Garik от 27 марта 2024, 07:15:58Выставить правильно атрибуты файлов и папок. 
Я выше писал что выставлял не только атрибуты, но и пробовал разные права.

Цитата: Garik от 27 марта 2024, 07:15:58И вы папку tmp не от root создаёте?
Эта папка по идее должна создаваться и удалятся автоматом. Я создавал под admin, я выше тоже писал от каких пользователей у меня всё работает.

Итог истории довольно интересный. Я снёс все куки в мозиле и плагин стал сразу же.