Всем привет! Проблема такая: стоит XAMPP, при использовании функции move_uploaded_file в lampp/temp/ создается временный файл для последующего перемещения в директорию сайта, и на этом этапе появляются ошибки доступа и перемещение не происходит: Warning: move_uploaded_file(../img/494631.jpg): failed to open stream: Отказано в доступе in ....... Warning: move_uploaded_file(): Unable to move '/opt/lampp/temp/phpVPVQHi' to '../img/494631.jpg' in ...... Как это победить? Как правильно выставить права на вновь создаваемые временные файлы
сделай права на папку "/opt/lampp...." - чтение-запись всем, а потом лишнее того вроде с правами проблема.... у меня Linux, но вроде они похожи
Тут наверное проблеме не откуда - а куда. Попробуте адекватный путь назначения, без всяких .. в начале
Код (Text): define('WWW_ROOT', SITE_ROOT . 'public/'); Что вы имеете ввиду под "адекватный путь"? Честно говоря, мне этот относительный вариант тоже не нравится, но вот тогда какой вопрос: есть структура сайта: config, public, engine, templates, data В config/config.php определены пути до всех директорий, сначала определен site_root - Код (Text): define('SITE_ROOT', __DIR__ . '/../'); , затем все остальные, к примеру Код (Text): define('WWW_ROOT', SITE_ROOT . 'public/'); . Вопрос: как правильно прописать в конфиге путь к public/img, чтобы затем всё оттуда корректно подгружалось на разные страницы из разных директорий? Пробовал Код (Text): define('IMG_ROOT', WWW_ROOT . 'img/'); или Код (Text): define('IMG_ROOT', SITE_ROOT . 'public/img/'); - не работает, и приходится в каждой функции прописывать относительный путь, что крайне смущает.
Не люблю я все эти точки в коде, никогда не знаешь, какая функция будет их раскрывать, какая нет. есть https://www.php.net/dirname
А как конфиг подключается? Тоже через __DIR__? --- Добавлено --- В смысле подгружалось? Случаем не попутал с формированием адресов? --- Добавлено --- Тоже используй абс. адреса. Тоже формируй их с использованием предопределенной базы.
Прописал через dirname: Код (Text): define('SITE_ROOT', dirname(__DIR__) . '/'); define('WWW_ROOT', SITE_ROOT . 'public/'); define('IMG_DIR', WWW_ROOT . 'img/'); Изображение все равно не грузится, хотя путь верный прописан: Код (Text): <img src="/home/garrison_mc/www/alexsite1.my/public/img/1.jpg"> Но почему не работает?
На public/index.php, например, подключается так: Код (Text): require_once(dirname(__DIR__) . '/config/config.php'); Неправильно?
Что касается подключения файлов/определения путей в ФС, определи базу прямо во фронте и везде используй ее, уже начиная с подключения конфига. Исключения могут быть, но только для относительно независимых частей сайта, например внутри шаблона оформления можешь снова использовать __DIR__ для подключения отдельных блоков и т.п., вместо того чтобы использовать константу, определенную вне шаблона.
@artoodetoo, контекст – великая сила, так что кому надо, меня поймет. Но тут спорить, конечно, бессмысленно. Постараюсь хотя бы в этом разделе выражаться более точно --- Добавлено --- P.S. Меня смутило, что автор выше показывал более-менее вменяемые определения констант. Но а когда он поплыл на элементарщине, я не успел быстро сменить стиль речи. Наверное, от шока --- Добавлено --- @Alexandrinho, приветствую. «Вкурил» текст по ссылке выше? Если да, скажи честно, как тебя можно было назвать до того
да, «вкурил», спасибо mkramer за статью. А до этого меня можно было назвать «новичком», и вопрос был задан в разделе «для новичков», где наверное естественно, что можно встретить элементарные вопросы
@Alexandrinho, на будущее: когда вам задают конкретны вопросы вроде на них нужно отвечать. А если вопрос не понятен, не стесняться и просить уточнить.