【问题标题】:fopen in codeigniter not working on the server?codeigniter中的fopen在服务器上不起作用?
【发布时间】:2017-06-12 20:51:24
【问题描述】:

我使用 fopen 访问并写入一个 json 文件,我的控制器代码是这样的

$this->data['date'] = $this->issue_model->get_date();
        $this->data['com'] = fopen("assets/global/plugins/fullcalendar/demos/json/events.json", "r") or die("Unable to open file!");
        $txt = json_encode($this->data['date']);
        fwrite($this->data['com'], $txt);

一开始我写了整个路径,但它给了我一个错误

fopen(base_url().'assets/global/plugins/fullcalendar/demos/json/events.json', "r") or die("Unable to open file!");

错误看起来像这样

遇到了 PHP 错误

严重性:警告

消息:fopen(): php_network_getaddresses: getaddrinfo failed: Name or service not known

文件名:controllers/welcome.php

行号:45

问题是我的网站在我的本地主机上工作得很好,但是当我将它上传到我的服务器上时,它无法访问文件并在上面写入

谁能告诉我我的代码有什么问题?

【问题讨论】:

标签: php json codeigniter


【解决方案1】:

问题与您服务器上的目录权限有关。 首先检查目录权限:

$ ls -ld directory

它的作用如下:

-d, --目录 列出目录条目而不是内容,并且不要取消引用符号链接

// 对于 Linux

如果不存在,请提供写入权限。

【讨论】:

  • 确实你必须有写权限。在 Linux 上,您可以使用类似 rwxrwxrwx(r 表示读取,w 表示写入,x 表示执行)的内容,如果不允许使用该权限,则每个字符都可以替换为 -。您的服务器用户(如果您在 Debian/Ubuntu 上使用 Apache,则为 www-data)应该具有写入 (w) 权限。否则无法写入目录。
  • 在json文件上我已经给了它写权限或者你建议给assets目录写权限?
  • @HanyHesham 你需要对json/目录有写权限才能在里面创建json文件。
  • 关注@HanyHesham 在上一条评论中所说的
猜你喜欢
  • 2015-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-25
相关资源
最近更新 更多