Почему переключение в безопасную папку (httpsdocs) нарушает функцию загрузки файлов PHP - PullRequest
0 голосов
/ 12 января 2019

Версия сервера: Apache / 2.4.34 (Unix) ПРИМЕЧАНИЕ. Это не вопросы Plesk или панели управления. Это пользовательское PHP-приложение, размещенное на выделенном сервере Rackspace без панели управления.

Я пытаюсь использовать существующий сертификат SSL для нескольких подкаталогов домена, но архитектура домена разделяет две директории для небезопасных / безопасных:

httpdocs
httpsdocs

Я скопировал все с httpdocs на httpsdocs, а также принудительно отправил трафик на https с помощью .htaccess. Все отлично работало, пока я не попробовал функциональность загрузки файлов PHP.

Вот фрагмент кода, который не выполняется с безопасной стороны:

$path = "uploaded_files/".$row_query[0].'/'.$file_name;
copy($temp_file, $path);

В ходе некоторой отладки я обнаружил, что временный файл создается: / TMP / phpanKT4N

но ошибка, которую я вижу в журналах: копия (uploaded_files / New Sub Folder / 30052_testing.txt): не удалось открыть поток: в доступе отказано в /var/www/vhosts/.com/httpsdocs/demo/resource/add_resource.php строке 108

Я попытался изменить copy () на move_uploaded_file (), но вот ошибка для этого:

PHP Warning:  move_uploaded_file(uploaded_files/test/30054_testing.txt): failed to open stream: No such file or directory in /var/www/vhosts/<thedomain>.com/httpsdocs/demo/resource/add_resource.php on line 111
PHP Warning:  move_uploaded_file(): Unable to move '/tmp/phpOC9YEF' to 'uploaded_files/test/30054_testing.txt' in /var/www/vhosts/<thedomain>.com/httpsdocs/demo/resource/add_resource.php on line 111

Я искал в стеке и обнаружил, что право владения должно совпадать, но разрешения для httpdocs и httpsdocs выглядят одинаково.

Папка / tmp принадлежит root: root, и, как я уже сказал, она отлично работает из незащищенной папки. Папки незащищенной и безопасной загрузки идентичны:

httpdocs:

drwxrwxr-x+  8 theuser apache  4096 Sep 22  2015 uploaded_files

httpsdocs:

drwxrwxr-x+  8 theuser apache  4096 Sep 22  2015 uploaded_files

Это конфигурация, проблема с разрешениями или как?

1 Ответ

0 голосов
/ 13 января 2019

понял это ... Запустил следующее:

Сначала найдите пользователя apache:

egrep -i '^user|^group' /etc/httpd/conf/httpd.conf 

Результат: Пользователь apache Группа apache

Затем запустил это, и это решило все проблемы загрузки файлов PHP в httpsdocs:

chown -R apache:apache /var/www/vhosts/<thedomain>.com/httpsdocs/
chmod -R g+rw /var/www/vhosts/<thedomain>.com/httpsdocs/
...