#php #html #linux #centos
#php #HTML #linux #centos
Вопрос:
Я тестирую загрузку файла между клиентом и сервером. Но загрузка файла не работает, потому что ниже ошибка.
Невозможно переместить ‘/tmp/phpxQHW5q’ в ‘/var/www/html/mri_image/test.jpg ‘ в /var/www/html/server_form.php в строке 49, ссылка:http://192.168.1.12/client_form.php
Я искал эту проблему в stackoverflow. Большинство решений — это проблема разрешения. Итак, папка tmp и mri_image принадлежит apache и изменена модом 755.
Затем, не работает, я хочу вашей помощи
Для справки, моя ОС — CentOS 7, версия php — 7.3
Ответ №1:
Недавно у меня возникла проблема с Apache и PHP, пытающимися записать в / tmp, но заявившими, что скрипт не выполнен с ошибкой «Нет такого файла или каталога»
Centos 7 использует systemd, который обладает потрясающей функцией ( PrivateTmp
), которая прерывает доступ Apache / PHP к папкам / tmp (особенно в тех случаях, когда файлы должны быть доступны другим процессам / просмотрены другими. Эта функция работает путем создания своего рода «виртуального» каталога / tmp для каждого процесса, поэтому файл, видимый Apache, не будет виден PHP и т.д.
Сначала скопируйте файлы httpd.service и php-fpm.service из /usr/lib/systemd/system/ в /etc/systemd /system, используя команды ниже.
cp /usr/lib/systemd/system/httpd.service /etc/systemd/system/. amp;amp; cp /usr/lib/systemd/system/php-fpm.service /etc/systemd/system/.
После копирования их на место отредактируйте каждую копию файлов в новом расположении и измените строку с PrivateTmp=true
на PrivateTmp=false
с помощью vi или вашего предпочтительного текстового редактора.
vi /etc/systemd/system/httpd.service
vi /etc/systemd/system/php-fpm.service
После этих изменений вам необходимо перезапустить systemd, а также php-fpm и apache.
Перезапустите systemd:
sudo systemctl daemon-reload
Перезапустите apache:
sudo systemctl restart httpd
Перезапустить php-fpm:
sudo systemctl restart php-fpm