2016-07-24 164 views
1

这个简单的代码创建一个文件,当页面刷新,但它不工作。file_put_contents无法在服务器上工作

<?php 
    $fileName="test1.html"; 
    $content="<h1>header</h1>"; 
    file_put_contents($fileName,$content); 
?> 

从我所看到的,用户必须创建一个文件

lrwxrwxrwx. 1 admin1 root   13 Jul 10 22:35 html -> /var/www/html 

什么可能阻止文件的创建任何想法所需的所有特权?

+0

下'admin1'所以PHP运行? – Eun

+0

显示的错误是什么? – Drakes

+0

@FirstOne所有的php都由用户Admin1-rw-r - r--所有。 1 admin1 root 77 Jul 24 16:04 file.html -rw-rw-r--。 1 admin1 Ian 241 Jul 21 16:37 form_email.php -rw-rw-r--。 1 admin1 Ian 725 Jul 23 18:31 forms_basics.php -rw-rw-r--。 1 admin1 Ian 215 Jul 21 22:11 form_script.php -rw-rw-r--。 1 admin1 Ian 245 Jul 21 21:55 helloworld2.php -rw-r - r--。 1 admin1 Ian 114 Jul 24 17:30 helloworld.php -rw-r - r--。 1 admin1 root 18 Jul 20 13:07 include.php -rw-r - r--。 1 admin1 Ian 383 Jul 15 11:31 index.html [/ CODE] – Matrix1977

回答

0

html是符号链接/var/www/html

ls -ldZ /var/www/html 
drwxr-xr-x. 2 admin1 brahim system_u:object_r:httpd_sys_content_t:s0 274 Jul 24 17:36 /var/www/html 

你不需要为符号链接的写权限,但对于符号链接的目标。

此外,它是不是具有的权限,但其运行apache Web服务器(通常www-dataapache在Fedora),用户需要这些权限。

也给所有用户的权限写信给你的web目录是一个坏主意,所以让我们试试这个:

  1. 创建/var/www/html一个子目录叫data

    mkdir /var/www/html/data 
    
  2. 为其apache用户授予可写入权限:

    chown apache:root /var/www/html/data 
    chmod 700 /var/www/html/data 
    
  3. 修改你的脚本编写到这个目录:

    $fileName="data/test1.html"; 
    
+0

@jakue我得到错误消息 chown:无效用户:'www-data:root'我想我可能已经删除了用户www-data错误。我无法在cat/etc/passwd中找到这个用户:( – Matrix1977

+0

)如果你删除系统用户不会感到惊讶,不适合你。从一个干净的安装开始,应该可以让你前进。 – Jakuje

+0

我修改了答案以反映'apache'用户。在Debian上使用'www-data'。使用'apache'用户应该完成这项工作。 – Jakuje

相关问题