经过一些安全更新后,NextGEN Gallery插件不再允许上传图像。
当一个有效的图像文件被拖到上传区域并点击"上传图像"时,会显示以下错误消息:
Invalid image file. Acceptable formats: JPG, GIF, and PNG.
在挖掘插件文件并生成一些错误信息后,我们发现is_image_file()
中的以下行返回了false
@exif_imagetype($filename)
原因是读取临时上传的图像文件时出现问题,该文件本应类似于/tmp/phpABCDEF123
。
原因同样是为PHP新设置的open_basedir
选项。这使得PHP脚本无法访问目录/tmp
。解决方案是在Apache站点配置中设置不同的upload_tmp_dir
。
php_admin_value open_basedir "/var/www/wordpress"
php_admin_value upload_tmp_dir "/var/www/wordpress/wp-content/uploads/tmp"
注意:这个新的上传/temp目录必须不允许执行PHP文件,否则可能会导致重大安全问题。
<Directory /var/www/wordpress/wp-content/uploads>
<Files *.php>
deny from all
</Files>
</Directory>