doudizhu2222
2016-03-16 12:48
浏览 58
已采纳

Ubuntu - php chmod()在创建副本后不更改文件权限

I have the following code running on ubuntu,apache,php

if (!file_exists(THIS_DIR."DEFINE.php")) {
    copy(THIS_DIR."DEFINE.default.php",THIS_DIR."DEFINE.php");
    chmod(THIS_DIR."DEFINE.php",777);
}

after this run this code, I check the file in terminal:

$ ls -l DEFINE*
-rwxrwxrwx 1 www-data www-data 353 2015-11-25 13:28 DEFINE.default.php
-r----x--t 1 www-data www-data 353 2016-03-16 12:44 DEFINE.php

As u can see the file is created, own by the apache process, but chmod didn't work, and the file cannot be edited by the apache process.

Why is that?

The code works on my win dev env, how can I make it work on Ubuntu

图片转代码服务由CSDN问答提供 功能建议

我在ubuntu上运行以下代码,apache,php

 <  code> if(!file_exists(THIS_DIR。“DEFINE.php”)){
 copy(THIS_DIR。“DEFINE.default.php”,THIS_DIR。“DEFINE.php”); 
 chmod(THIS_DIR。“DEFINE.php  “,777); 
} 
   
 
 

运行此代码后,我检查终端中的文件:

 < 代码> $ ls -l DEFINE * 
-rwxrwxrwx 1 www-data www-data 353 2015-11-25 13:28 DEFINE.default.php 
r ---- x  -  t 1 www-data www-data  353 2016-03-16 12:44 DEFINE.php 
   
 
 

正如你所看到的那样,文件是由apache进程创建的,但chmod不起作用 ,并且apache进程无法编辑该文件。

为什么会这样?

代码适用于我的win dev env,我该怎么办? 使其适用于Ubuntu

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • douji6896 2016-03-16 12:57
    已采纳

    Try below its worked for me:

    chmod(THIS_DIR."DEFINE.php",0777);

    instead

    chmod(THIS_DIR."DEFINE.php",777);

    已采纳该答案
    打赏 评论

相关推荐 更多相似问题