【问题标题】:fwrite function not able to find directory other than local serverfwrite函数无法找到本地服务器以外的目录
【发布时间】:2015-08-04 09:09:51
【问题描述】:

我正在将 codeigniter 与 php 一起使用。我正在尝试在我的文件结构(Ubuntu 文件结构)中写入图像。此图像来自 url。我写图像的代码是

$content = file_get_contents($url);
                $filename = "myImage.jpg";
                $filepath = "/opt/lampp/htdocs/affiliatedSystem/assets/file/".$filename;
                //Store in the filesystem.
                $fp = fopen($filepath , "w");
                fwrite($fp, $content);
                fclose($fp);

这段代码在本地主机上运行得很好,但是当我在服务器上上传项目时,它给出了这样的错误

消息:fopen(/opt/lampp/htdocs/affiliatedSystem/assets/file/myImage.jpg): 无法打开流:没有这样的文件或目录我也给了文件 服务器上文件夹 777 的权限。

那么,如何在服务器上写入图像?

【问题讨论】:

  • 您检查过文件夹的所有权吗?喜欢 ubuntu : www-data 还是 ubuntu : ubuntu?
  • 你在做什么......以写入模式打开图像?还在上面写内容??
  • myImage 是不变的吗?为什么 $filepath 是固定的?
  • 我想通过编码将图像从 url 保存到我的文件结构中

标签: php codeigniter


【解决方案1】:

(我无法添加评论,所以我写了答案。但这是解决方案吗?)。

我在 Fedora Linux 上遇到了同样的问题。该文件夹的所有者是我,没有 apache。尝试使用您的用户 apache 更改所有者文件夹(如果您使用 apache)。

首先,激活 httpd_unified :

setsebool -P httpd_unified on

其次,赋予用户 apache 权限:

chown yourApacheUser:yourApacheGroup /var/www/..../yourDirectory

【讨论】:

  • 什么返回 file_exists("/opt/lampp/htdocs/affiliatedSystem/assets/file") ?如果为 false,则您的路径不正确或目录不存在。如果为真,请检查所有者目录。
【解决方案2】:

最后,我得到了答案,我在 url 的开头使用了 $_SERVER['DOCUMENT_ROOT'] 函数,比如 this$_SERVER['DOCUMENT_ROOT']."/affiliatedsystem/assets/file/".$filename; 它为我提供了服务器的正确 url,我可以在服务器上的目录中写入文件。

【讨论】:

    猜你喜欢
    • 2023-03-04
    • 2018-11-03
    • 2019-09-28
    • 1970-01-01
    • 2017-12-09
    • 1970-01-01
    • 2018-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多