gpt4 book ai didi

php - file_exists()在while循环内的php5中不起作用

转载 作者:可可西里 更新时间:2023-11-01 12:33:20 26 4
gpt4 key购买 nike

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 有关。您需要指定一个完整路径,而您只指定一个文件名。在使用它之前尝试 echoing $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, file_get_contents($_GET["RecordingUrl"]));
}

function find_new_name ( $file, $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;
}
?>

我改变了什么:

  1. 定义了一个const SAVE_PATH = "/var/www/osbs/";
  2. 到处使用新常量。不再有时是相对的,有时是绝对的,一切都是绝对的。
  3. 使用 file_put_contents 中的常量(这是实际修复,您需要此处的完整路径)
  4. 添加了额外的检查以确保 RecordingUrl 已设置,否则在未设置时您会收到 PHP 警告。

关于php - file_exists()在while循环内的php5中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44424798/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com