Php 文件_exists()不在AWS ec2服务器上工作,即使它在dev服务器上工作,并且文件在它所在的位置

Php 文件_exists()不在AWS ec2服务器上工作,即使它在dev服务器上工作,并且文件在它所在的位置,php,wordpress,amazon-web-services,amazon-ec2,buddypress,Php,Wordpress,Amazon Web Services,Amazon Ec2,Buddypress,我在运行默认DebianLinux、wordpress和buddypress的AmazonEC2服务器上安装了buddypress。用户试图上传头像,但无法调整大小。这是因为在调整头像大小的buddypress代码中,对file_exists($original_file)的调用返回false,尽管我可以看到该文件正好位于它应该位于的目录中 这在我们的开发服务器上不是一个问题,在那里上传化身可以完美地工作。下一行代码是导致调整大小失败的原因 $original_file = '/var/www/

我在运行默认DebianLinux、wordpress和buddypress的AmazonEC2服务器上安装了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所有。我已经试用了chmod775和777,但php仍然无法识别该文件。有人知道如何在这个AmazonEC2服务器上配置php,以便它能够识别文件确实存在吗

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

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

如果您是在windows计算机上开发,则可能使用
\
作为目录分隔符

可能的解决办法: 始终使用
/
作为目录分隔符,因为这将适用于所有系统


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

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

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

如果您是在windows计算机上开发,则可能使用
\
作为目录分隔符

可能的解决办法: 始终使用
/
作为目录分隔符,因为这将适用于所有系统


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

如果正确粘贴了上面的代码,则会出现一个语法错误,该错误将显示在系统日志中,表明您在
If
语句中缺少一个关闭

您的代码应该如下所示:

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

if(!file_exists($original_file))
    return false;

如果您正确地粘贴了上面的代码,您将得到一个语法错误,该错误将显示在您的系统日志中,即您在
If
语句中缺少一个结束

您的代码应该如下所示:

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

if(!file_exists($original_file))
    return false;

您的安装中是否启用了安全模式?这可能与ec2无关。可能是权限或配置问题。当文件位于文档根目录之外时,我在EC2上也遇到同样的问题。与安装中的用户/组安全模式有关吗?这可能与ec2无关。可能是权限或配置问题。当文件位于文档根目录之外时,我在EC2上也遇到同样的问题。与用户/组有关