PHP: "failed to open stream: Permission denied"
PHP: "failed to open stream: Permission denied"
当我尝试通过某些方式访问任何目录或文件时,我在服务器上得到了一些有趣的结果 Function.I 已将我所有的文件和目录权限设置为 777 并将内容所有者更改为 Apache,但我仍然出现错误 messages.Code:
move_uploaded_file($_FILES['file']['tmp_name'], '/var/www/html/fileContent_Site/userData/'.$_SESSION['username'].DIRECTORY_SEPARATOR.$_FILES['file']['name']);
要么
file_put_contents('userData/userData.txt', $result,FILE_APPEND);
mkdir("userData/".$register['username']);
对于 'move_uploaded_file()' 我得到:
move_uploaded_file(/var/www/php/Site/userData/radi/110729.png):failed to open stream: Permission denied in /var/www/php/Site/upload.php
move_uploaded_file(): Unable to move '/tmp/phpUFvMcn' to '/var/www/php/Site/userData/radi/110729.png' in /var/www/php/Site/upload.php
以及 'file_put_content()' 和 'mkdir()'
file_put_contents(userData/userData.txt): failed to open stream: Permission denied in /var/www/php/Site/register.php
mkdir(): Permission denied in /var/www/php/Site/register.php
使用
$_SERVER["DOCUMENT_ROOT"]."/myFolder/path to upload folder".
并检查一次
打开 http.conf(在 /opt/lampp/etc/httpd.conf 中)文件。
编辑这部分:
<IfModule unixd_module>
#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User hostname
Group hostname
</IfModule>
看看,是否有效。
检查运行 PHP 的所有者。要检查 - 只需在 PHP 文件
中的“file_put_contents”附近添加这些字符串
echo "当前用户:".get_current_user();
echo "脚本在用户下执行:".exec('whoami');
如果您看到当前用户和“脚本用户”之间的区别,那么您就找到了问题所在。
输出示例:
current user: root
script was executed under user: www-data
只需将适当的用户设置为您要从 PHP 脚本写入的 PHP 文件 directory/directory:
在 Linux 终端执行:
chown -R www-data:www-data /path/to/the/folder
请注意,“www-data”用户仅作为示例。您应该使用从“脚本在用户下执行”输出中获得的用户。
P.S:
要检查文件夹所有者,您可以使用此 linux 命令:
ls -ltr
P.P.S:
检查您的文件夹是否具有正确的访问权限:755
文件夹 php 文件应具有“644”访问权限。
要检查权限,使用与所有者检查相同的命令:
ls -ltr
您会看到如下内容:
drwxr-xr-x 10 www-data www-data 4096 Aug 5 15:18 api
其中“drwxr-xr-x”为访问权限。 Google 它,以获取更多信息。
当我尝试通过某些方式访问任何目录或文件时,我在服务器上得到了一些有趣的结果 Function.I 已将我所有的文件和目录权限设置为 777 并将内容所有者更改为 Apache,但我仍然出现错误 messages.Code:
move_uploaded_file($_FILES['file']['tmp_name'], '/var/www/html/fileContent_Site/userData/'.$_SESSION['username'].DIRECTORY_SEPARATOR.$_FILES['file']['name']);
要么
file_put_contents('userData/userData.txt', $result,FILE_APPEND);
mkdir("userData/".$register['username']);
对于 'move_uploaded_file()' 我得到:
move_uploaded_file(/var/www/php/Site/userData/radi/110729.png):failed to open stream: Permission denied in /var/www/php/Site/upload.php
move_uploaded_file(): Unable to move '/tmp/phpUFvMcn' to '/var/www/php/Site/userData/radi/110729.png' in /var/www/php/Site/upload.php
以及 'file_put_content()' 和 'mkdir()'
file_put_contents(userData/userData.txt): failed to open stream: Permission denied in /var/www/php/Site/register.php
mkdir(): Permission denied in /var/www/php/Site/register.php
使用
$_SERVER["DOCUMENT_ROOT"]."/myFolder/path to upload folder".
并检查一次
打开 http.conf(在 /opt/lampp/etc/httpd.conf 中)文件。
编辑这部分:
<IfModule unixd_module>
#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User hostname
Group hostname
</IfModule>
看看,是否有效。
检查运行 PHP 的所有者。要检查 - 只需在 PHP 文件
中的“file_put_contents”附近添加这些字符串echo "当前用户:".get_current_user();
echo "脚本在用户下执行:".exec('whoami');
如果您看到当前用户和“脚本用户”之间的区别,那么您就找到了问题所在。
输出示例:
current user: root
script was executed under user: www-data
只需将适当的用户设置为您要从 PHP 脚本写入的 PHP 文件 directory/directory: 在 Linux 终端执行:
chown -R www-data:www-data /path/to/the/folder
请注意,“www-data”用户仅作为示例。您应该使用从“脚本在用户下执行”输出中获得的用户。
P.S: 要检查文件夹所有者,您可以使用此 linux 命令:
ls -ltr
P.P.S: 检查您的文件夹是否具有正确的访问权限:755 文件夹 php 文件应具有“644”访问权限。
要检查权限,使用与所有者检查相同的命令:
ls -ltr
您会看到如下内容:
drwxr-xr-x 10 www-data www-data 4096 Aug 5 15:18 api
其中“drwxr-xr-x”为访问权限。 Google 它,以获取更多信息。