加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

file_exists()在循环中不在php5里面工作

发布时间:2020-12-13 13:30:56 所属栏目:PHP教程 来源:网络整理
导读:file_exists不起作用.我看了几个例子但仍然没有.程序不检测文件.我的文件路径是/var/www/osbs/ PHPAPI/recording.mp3,网站根目录是osbs.此文件的位置在PHPAPI中,这就是我没有在file_put_contents中放置完整路径的原因.该程序能够制作原始recording.mp3,但不
file_exists不起作用.我看了几个例子但仍然没有.程序不检测文件.我的文件路径是/var/www/osbs/ PHPAPI/recording.mp3,网站根目录是osbs.此文件的位置在PHPAPI中,这就是我没有在file_put_contents中放置完整路径的原因.该程序能够制作原始recording.mp3,但不能制作任何附加版本.
<?php
$actual_name = pathinfo("PHPAPI/recording.mp3",PATHINFO_FILENAME);
$original_name = $actual_name;
$extension = pathinfo("PHPAPI/recording.mp3",PATHINFO_EXTENSION);

if ($_GET["RecordingUrl"]) {
     if (file_exists("/var/www/osbs/PHPAPI/".$actual_name.".".$extension)) {
        $actual_name = find_new_name($original_name,$extension);
     }
     else {
        $actual_name = $original_name;
     }
     $name = $actual_name.".".$extension;
     file_put_contents($name,file_get_contents($_GET["RecordingUrl"]));
}

function find_new_name ( $file,$extension ) {
    $name = $file.".".$extension;
    $i = 0;
    while(file_exists("/var/www/osbs/PHPAPI/".$name)){
        $new_name = $file.$i;
        $name = $new_name.".".$extension;
        $i++;
    }
    return $new_name;
}
 ?>
您的问题在于file_put_contents.您需要指定完整路径,并且只需指定文件名.尝试在使用它之前回显$name,你会发现它不是路径,只是文件名.

我建议你使用路径在文件的开头设置一个常量,而不是有时依赖于相对路径,有时依赖于绝对路径.

<?php
const SAVE_PATH = "/var/www/osbs/";

$actual_name = pathinfo(SAVE_PATH."PHPAPI/recording.mp3",PATHINFO_FILENAME);
$original_name = $actual_name;
$extension = pathinfo(SAVE_PATH."PHPAPI/recording.mp3",PATHINFO_EXTENSION);

if (isset($_GET["RecordingUrl"]) && $_GET["RecordingUrl"]) {
     if (file_exists(SAVE_PATH."PHPAPI/".$actual_name.".".$extension)) {
        $actual_name = find_new_name($original_name,$extension);
     }
     else {
        $actual_name = $original_name;
     }
     $name = $actual_name.".".$extension;

     file_put_contents(SAVE_PATH.'PHPAPI/'.$name,$extension ) {
    $name = $file.".".$extension;
    $i = 0;
    while(file_exists(SAVE_PATH."PHPAPI/".$name)){
        $new_name = $file.$i;
        $name = $new_name.".".$extension;
        $i++;
    }
    return $new_name;
}
 ?>

我改变了什么:

>定义了一个const SAVE_PATH =“/ var / www / osbs /”;>到处使用新常量.有时候没有更多的亲戚,有时甚至是绝对的,这都是绝对的.>在file_put_contents中使用常量(这是实际修复,你需要一个完整的路径)>添加了一个额外的检查以确保RecordingUrl isset,否则在未设置时会收到PHP警告.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读