这个问题与这个问题非常相似:Apache 不允许 PHP 创建文件
然而,不同之处在于我在 XAMPP 设置下运行 Apache。
PHP 如下所示:
file_put_contents('image.png', base64_decode("iVBORw0KGgoAAAANSUhEUgAA…lb6PwMAAAAASUVORK5CYII="));
以下是将错误报告设置为时的警告信息E_ALL
:
Warning : file_put_contents(image.png): failed to open stream: No permission in /opt/lampp/htdocs/contentdb/index.php on line 215
(翻译过来,原文是德文)
根据公认的答案以及在“正常” Apache 设置中已经起作用的方法,我尝试解决此问题:
sudo chown www-data:www-data "/opt/lampp" -R
# I also tried chown with <myUserName>:<myUserName>, but it didn't work either
编辑:经过一番搜索,我找到了该文件properties.ini
。它包含我需要的内容。
[General]
installdir=/opt/lampp
base_stack_name=XAMPP
base_stack_key=
base_stack_version=7.2.7-0
base_stack_platform=linux-x64
base_stack_service=
require_root_privileges=1
[Apache] <- THIS IS THE IMPORTANT PART
apache_server_port=80
apache_user=daemon
apache_group=daemon
apache_server_ssl_port=443
apache_root_directory=/opt/lampp
apache_htdocs_directory=/opt/lampp/htdocs
apache_domainname=127.0.0.1
apache_configuration_directory=/opt/lampp/apache2/conf
[MySQL]
mysql_port=3306
mysql_host=localhost
mysql_root_directory=/opt/lampp/
mysql_binary_directory=/opt/lampp/bin
mysql_data_directory=/opt/lampp/var/mysql/
mysql_configuration_directory=/opt/lampp/etc
mysql_arguments=-u root -S "/opt/lampp/var/mysql/mysql.sock"
mysql_socket=/opt/lampp/var/mysql/mysql.sock
[PHP]
php_binary_directory=/opt/lampp/bin
php_configuration_directory=/opt/lampp/etc
php_extensions_directory=/opt/lampp/lib/php/extensions/no-debug-non-zts-20170718
下一步要尝试的是使用 chown daemon:daemon
。
但是,错误消息仍然不断出现,并且文件也尚未出现。
任何帮助是极大的赞赏。
编辑:问题已解决,请参阅下面的答案。
答案1
查看properties.ini
文件后,我发现我的 Xampp Apache 用户被称为 daemon :apache_user=daemon apache_group=daemon
因此,这:
sudo chown daemon:daemon -R
成功了!