下以動作請使用root權限控制,確保指令可以正確運作。
查看 vi /etc/php.ini
;;;;;;;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;;;;;;;
; Whether to allow HTTP file uploads.
; http://php.net/file-uploads
file_uploads = On
; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
; http://php.net/upload-tmp-dir
; upload_tmp_dir =
; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 2M
此設定說明,上傳檔案時,會先將檔案存放在預設/tmp 資料夾。
查看 /tmp 的權限應該為
drwxrwxrwt. 10 root root tmp
再往下檢查 /tmp下的檔案權限
ls /tmp -all
drwx------. 3 root root systemd-private-xxxxx-httpd.service-xxxxxx
將其擁有者修改為apache
chown -R apache /tmp/systemd-private-xxxxx-httpd.service-xxxxxx
再將其權限設定為755
chmod -R 755 /tmp/systemd-private-xxxxx-httpd.service-xxxxxx
--------------------------------------------------------------------------------
再來我們也需檢查PHP程式指定上傳的路徑
假設上傳路徑為 /var/www/html/upload
ls /var/www/html/upload
drwxr-xr-x. 2 myname web upload
將其擁有者修改為 apache
chown -R apache /var/www/html/upload
再將其權限設定為755
chmod -R 755 /var/www/html/upload
基本上這樣就可以讓上傳程式正常運作了。
如果,還是無法上傳檔案,那就是SELinux的限制了。
我們可以選擇關閉SELinux(以後不會遇到奇怪的問題,但安全性低)或是開放httpd上傳檔案設定。(安全性高)
查看 vi /etc/php.ini
;;;;;;;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;;;;;;;
; Whether to allow HTTP file uploads.
; http://php.net/file-uploads
file_uploads = On
; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
; http://php.net/upload-tmp-dir
; upload_tmp_dir =
; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 2M
此設定說明,上傳檔案時,會先將檔案存放在預設/tmp 資料夾。
查看 /tmp 的權限應該為
drwxrwxrwt. 10 root root tmp
再往下檢查 /tmp下的檔案權限
ls /tmp -all
drwx------. 3 root root systemd-private-xxxxx-httpd.service-xxxxxx
將其擁有者修改為apache
chown -R apache /tmp/systemd-private-xxxxx-httpd.service-xxxxxx
再將其權限設定為755
chmod -R 755 /tmp/systemd-private-xxxxx-httpd.service-xxxxxx
--------------------------------------------------------------------------------
再來我們也需檢查PHP程式指定上傳的路徑
假設上傳路徑為 /var/www/html/upload
ls /var/www/html/upload
drwxr-xr-x. 2 myname web upload
將其擁有者修改為 apache
chown -R apache /var/www/html/upload
再將其權限設定為755
chmod -R 755 /var/www/html/upload
基本上這樣就可以讓上傳程式正常運作了。
如果,還是無法上傳檔案,那就是SELinux的限制了。
我們可以選擇關閉SELinux(以後不會遇到奇怪的問題,但安全性低)或是開放httpd上傳檔案設定。(安全性高)
關閉SELinux
開啟檔案 vi /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protwction.
SELINUXTYPE=targeted
將SELINUX=enforcing 改為SELINUX=disabled
儲存後重新開機。
開放httpd上傳檔案設定
chcon -t httpd_sys_rw_content_t /var/www/mysite1/upload -R
留言
張貼留言