журнал ошибок при загрузке файла на сервере centos php

#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