php - 移动后找不到PHP文件
问题描述
我有一个脚本可以移动文件,然后尝试让文件生成缩略图。但是,它总是说该文件不存在。如果我file_exists()
在脚本执行后尝试文件,它似乎找到了它。
我的代码片段:
// Move file, returns a path e.g. "\home\sambam\public_html\sa\storage\files\0\rxugn7OXoHNRY4J.mp4"
// This also sets file permissions to 0755
$source = $fs->move_from_tmp($filename);
// clear cache
clearstatcache(true);
// Now file_exists returns false
if(file_exists($source)){
// generate thumbnail;
}
move_from_tmp:
public function move_from_tmp($filename){
// $this->tmp_folder = /home/sambam/public_html/ss/storage/tmp
// this->folder = /home/sambam/public_html/ss/storage/files/0
if(!is_readable($this->tmp_folder.self::DS.$filename)){ chmod($this->tmp_folder.self::DS.$filename, 0755); }
$ext = strtolower(pathinfo(basename($filename), PATHINFO_EXTENSION));
$new_filename = pathinfo($filename, PATHINFO_FILENAME);
// Move file
if(rename($this->tmp_folder.self::DS.$filename, $this->folder.self::DS.$new_filename.".".$ext)){
return $this->folder.self::DS.$new_filename.".".$ext;
}else{
return false;
}
}
这适用于我的本地机器,即 Windows,但似乎不适用于我的生产机器,即 Linux CentOs。
我也尝试过:
- 检查路径是否有任何前导/前缀空格
- 文件权限
- 该文件是可读/可写的
- 如果文件存在,它会做什么
解决方案
推荐阅读
- ios - pangestures 像 iOS 中的邮件应用程序一样交互
- url - 如何在身份验证提供程序的重定向 uri 中包含哈希片段
- ios - 无效的应用商店图标
- keycloak - kcadm 添加新的协议映射器
- c# - 辅助副本在 Service Fabric 中是否必不可少
- ocr - 识别身份证中的字段
- selenium-webdriver - 在 Selenium 中使用 xpath 选择列表中的多个元素
- c++ - 在不同架构中使用 Boost 进行序列化和反序列化
- typescript - TypeScript [ts] 元素隐式具有“任何”类型,因为类型“{}”没有索引签名
- angular - Angular dev bulild 从 URL 中删除/删除散列之前的参数