1

我在运行默认 Debian linux、wordpress 和 buddypress 的 Amazon ec2 服务器上安装了 buddypress。用户正在尝试上传头像,但无法调整其大小。这是因为在调整头像大小的 buddypress 代码中,对 file_exists($original_file) 的调用返回 false,即使我可以看到该文件恰好位于它应该在的目录中。

这在我们的开发服务器上不是问题,上传头像可以完美运行。下一行代码是导致调整大小失败的原因。

$original_file = '/var/www/html/wp-content/uploads/avatars/1/test-picture.png';

if(!file_exists($original_file)
    return false; 

现在我在那个目录中 ssh,并且可以看到该路径是绝对正确的。我猜这是php权限的问题?能够访问该目录并查看该文件确实存在。

所有文件现在都归 apache:apache 所有。我已经尝试过 chmod 775 和 777,但 php 仍然无法识别该文件。有谁知道如何在这个 Amazon ec2 服务器上配置 php,以便它可以识别该文件确实存在?

4

2 回答 2

1

如果您正确粘贴了上面的代码,您将收到一个语法错误,该错误将显示在您的系统日志中,表明您)if语句中缺少结束语。

您的代码应如下所示:

$original_file = '/var/www/html/wp-content/uploads/avatars/1/test-picture.png';

if(!file_exists($original_file))
    return false;
于 2013-08-23T16:13:10.120 回答
0

一种可能的原因可能是区分大小写。您声明您的生产服务器运行 linux,它区分大小写。如果您的开发服务器是 Mac,那么您很可能使用的是不区分大小写的文件系统。

可能的解决方案:保护全小写和用户小写目录中的所有图像。调用时file_exists,调用strtolower文件名。

如果你在 Windows 机器上开发,你可能会使用\目录分隔符。

可能的解决方案:始终/用作目录分隔符,因为这适用于所有系统。

保存到文档根目录上方的文件夹时是否遇到这些问题?

于 2013-06-20T02:26:00.343 回答