PHP: Warning: file (): Filename cannot be empty

Мой рукописный шрифт, который производит файл .txt $ archivo_salida с решениями SQL INSERT, дает мне ошибку "file (): Filename cannot be empty", когда пробует открывать простой файл .txt 1 KB - который содержит текст, который нужно обрабатывать - с функцией file (), таково, который я схватил:

$matriz = file($archivo_pistas);

Заблаговременно открой другие два файла той же формы без проблем, помещенные все они в той же папке, в которой находится рукописный шрифт:

$matriz = file($archivo_entrada);

Y:

$matriz = file($archivo_votos);

Это процесс, который уже я сделал в других случаях без какой-либо проблемы, это первый раз, который не удается таким образом. Файл существует и содержит информацию, которую он должен содержать. И в свойствах подтверждают, что это .txt: "Документ текста (.txt)".

В форуме на английском говорят об этой ошибке, но относительно груза файлов большого размера, который было бы возможно решать изменяя upload_max_filesize в php.ini, но, я настаиваю, этот файл только взвешивает 1 KB.

У рукописного шрифта есть index.php формы:

<?php

  #ini_set('max_execution_time', 500);

  require("conexion.php");
  include_once("funciones.php");

  # Variables a modificar para cada recopilatorio

  $archivo_entrada = "2000.txt";
  $archivo_votos = "votos_2000.txt";
  $archivo_pistas = "pistas_2000.txt";
  $archivo_salida = "insert_2000.txt";
  $ano = 2000;
  $enlace_spotify = "https://open.spotify.com/user/optigan/playlist/7emjAKUrrydxt0NJLGPVrI?si=yDKRgIlNRbWdiujh7XfRMQ";

  # Archivos INSERT: activar progresivamente las claúsulas buleanas; no activar una hasta no haber introducido en la base de datos el archivo INSERT generado por la anterior y, a su vez, desactivar la cláusula una vez generado el archivo para evitar que se vuelva a generar

  $listas = false;

  if($listas == true) 
  {
    require("insert_listas.php");
    insert_listas($ano, $enlace_spotify, $archivo_salida);
  }

  $canciones = true;

  if($canciones == true) 
  {
    require("insert_canciones.php");
    insert_canciones($archivo_entrada, $archivo_votos, $archivo_pistas, $id_lista, $archivo_salida);
  }

...

?>

Код которого, для случая, который занимает нас, значимый до приостанавливающих точек.

И файл в вопросе "insert_canciones.php", в котором происходит ошибка:

<?php

  function insert_canciones($archivo_entrada, $archivo_votos, $archivo_pistas, $id_lista, $archivo_salida)
  { 
    $nombre_tabla = "canciones";
    $atributos = "(id_cancion, titulo_cancion, pista, votos, cara_b, enlace_youtube, id_lista)";

    encabezado($archivo_salida, $nombre_tabla, $atributos);

    $matriz = file($archivo_entrada);

    $datos = array();
    $par = array();

    foreach($matriz as $indice => $linea) #Título de la canción
    {  
      $archivo_pistas = false;

      if(strpos($linea, ").")) $par['cancion'] = cancion($archivo_pistas, $linea); #Extracción del título de la canción

      if(strpos($linea, "tema:")) #Extracción del enlace de YouTube
      {
        $par['enlace_YT'] = enlace_YT($linea);

        array_push($datos, $par); #La información queda guardada en un array asociativo "par" dentro de otro escalar "datos" de longitud 15; ejemplo: Array ( [0] => Array ( [titulo] => Baudelaire [enlace] => NULL )
      }
    }

    $matriz = file($archivo_votos);

    foreach($matriz as $indice => $linea) #Votos
    {
      $archivo_pistas = false;

      $cancion = cancion($archivo_pistas, $linea); #Extracción del título de la canción

      $voto = voto($linea, $voto);

      for($i = 0; $i < count($datos); $i++) if(in_array($cancion, $datos[$i])) $datos[$i]['voto'] = $voto; #Busca el título de la canción en el array "datos" y le asigna su número de votos; el array "par" pasa a tener tres elementos: Array ( [0] => Array ( [titulo] => Baudelaire [enlace] => NULL [voto] => 2 )
    }

    $matriz = file($archivo_pistas);

    foreach($matriz as $indice => $linea) #Pista 
    {
      $archivo_pistas = true;

      $cancion = trim(cancion($archivo_pistas, $linea)); #Extracción del título de la canción

      $pista = pista($linea); #Extracción de la pista que ocupa la canción en el recopilatorio

      for($i = 0; $i < count($datos); $i++) if(in_array($cancion, $datos[$i])) $datos[$i]['pista'] = $pista; #Busca el título de la canción en el array "datos" y le asigna su número de pista; el array "par" pasa a tener cuatro elementos: Array ( [0] => Array ( [titulo] => Baudelaire [enlace] => NULL [voto] => 2 [pista] => 04 )
    }

    $contador = count($datos);

    foreach($datos as $indice => $cuarteto) #Formateo de los datos y escritura en el archivo
    {
      $condicion = strpos($cuarteto['cancion'], "'");
      $formato1 = "(NULL, \"%s\", '%s', %s, 0, '%s', %d),";
      $formato2 = "(NULL, '%s', '%s', %s, 0, '%s', %d),";
      $parametro1 = $cuarteto['cancion'];
      $parametro2 = $cuarteto['pista'];
      $parametro3 = $cuarteto['voto'];
      $parametro4 = trim($cuarteto['enlace_YT']);
      $parametro5 = $id_lista;

      cuerpo($contador, $archivo_salida, $condicion, $formato1, $formato2, $parametro1, $parametro2, $parametro3, $parametro4, $parametro5);
      $contador--;
    }
  }

  $condicion = true;
  $atributo_bd1 = "max(id_lista)";
  $atributo_bd2 = null;
  $sql1 = $sql2 = "SELECT $atributo_bd1 FROM listas";
  $array_asociativo = $array_escalar = null;

  $id_lista = conexion($condicion, $sql1, $sql2, $atributo_bd1, $atributo_bd2, $array_asociativo, $array_escalar);

?>

Приветствие и спасибо за продвинутый.

0
задан 20.03.2019, 23:31
1 ответ

EstГЎs sobreescribiendo переменная, которую содержит string.

foreach($matriz as $indice => $linea) #Título de la canción
{  
  $archivo_pistas = false;

  if(strpos($linea, ").")) $par['cancion'] = cancion($archivo_pistas, $linea); #Extracción del título de la canción

  if(strpos($linea, "tema:")) #Extracción del enlace de YouTube
  {
    $par['enlace_YT'] = enlace_YT($linea);

    array_push($datos, $par); #La información queda guardada en un array asociativo "par" dentro de otro escalar "datos" de longitud 15; ejemplo: Array ( [0] => Array ( [titulo] => Baudelaire [enlace] => NULL )
  }
}

у Тебя Есть несколько частей cГіdigo, где ты распределяешь true или false в переменную $archivo_pistas, который содержит string с файлом.

1
ответ дан 02.12.2019, 05:21
  • 1
    Стой, qué такая глупая неудача. До сегодняшнего дня не я habí в данность эта ошибка, потому что incluí в false или true прямо внутри моего funció n песня ()... Попробовав быть má s " riguroso" огромная ошибка. Большое спасибо, Франсиско. – Optigan 20.03.2019, 23:40

Теги

Похожие вопросы