权限被拒绝在服务器上写文件

时间:2016-07-06 08:13:43

标签: php

我希望将Android手机中的文件上传到运行apache2的Raspberry Pi上的服务器。我想通过PHP无法正常工作,所以我把问题简化为一个最小的例子也失败了。我认为问题与权限有关。

在服务器上有以下wtest.php文件:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/s$
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

<?php
echo 'Current script owner: ' . get_current_user();
echo "\n";

$file2 = fopen('testfile2', 'w');
if ($file2 === false)
{
   print_r(error_get_last());
}
$fwrite2 = fwrite($file2, 'hello');
if ($fwrite2 === false){
    echo "\n";
    echo "write 2 error\n";
}
else{
   echo "write2 OK\n";
}
fclose($file2);
?>
</html>

如果我从PC上的浏览器访问此文件,我会

Current script owner: pi Array ( [type] => 2 [message] => fopen(testfile2): failed to open stream: Permission denied [file] => /var/www/gcm/wtest.php [line] => 8 ) write 2 error 

如果我在Raspberry Pi服务器上运行php标签内部的脚本,它就可以了。 暂时我已将权限更改为wtest.php和gcm文件夹中的777。我知道这对于permananet解决方案来说是一个坏主意,但我已经尝试过简单地试图缩小问题范围。

到目前为止,没有任何效果。任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

而不是以下原始代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/s$
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

<?php
echo 'Current script owner: ' . get_current_user();
echo "\n";

$file2 = fopen('testfile2', 'w');
if ($file2 === false)
{
   print_r(error_get_last());
}
$fwrite2 = fwrite($file2, 'hello');
if ($fwrite2 === false){
    echo "\n";
    echo "write 2 error\n";
}
else{
   echo "write2 OK\n";
}
fclose($file2);
?>
</html>

请将上述内容替换为file_put_contents原样:

  

此功能与连续调用fopen()fwrite()fclose()以将数据写入文件相同。

<?php
if (file_put_contents("testfile2", "hello") !== false)
  echo "File Written";
else
  echo "Failed";
?>

此外,

  

如果filename不存在,则创建该文件。否则,将覆盖现有文件,除非设置了FILE_APPEND标志。

注意:只需用上述内容替换整个文件即可。无需DocType Definition