2017-02-22 26 views
0

Я пытаюсь динамически создавать файлы миграции, и я сталкиваюсь с проблемой с функцией fopen, когда я вызываю функцию с динамической строкой для имени файла, я получаю следующую ошибку :PHP fopen invalide arguments при использовании динамической строки

"failed to open stream: Invalid Argument. 

теперь странно вещь, когда я беру строку имя_файла, которая вызвала ошибку, и поместить его в неподвижную функции FOPEN, она работает и создает файл.

здесь является частью кода, который не:

public function add_tables($from, $to) { 
     $migration_name = $this->generate_migration_name($from, $to); 
     $migration_file = fopen($migration_name, "w") or die("Unable to open file!"); 
     $migration_content = "..."; 
     fwrite($migration_file, $migration_content); 
    } 
public function generate_migration_name($from, $to) { 
      $current_date = Date('Y_m_d_His'); 
      return $current_date."_create_msl_".$from."_to_".$to."_table.php"; 
     } 

я делаю что-то неправильно?

ОБНОВЛЕНИЕ: $to и $from - две строки, которые считываются из текстового файла с использованием функции fgets. пример для строки, которая не удалась:

2017_02_22_154148_create_msl_yeshut_yatzran_to_mimshak_table.php 

Когда я исправил ее в функции fopen, файл создан успешно.

+0

Что находится внутри '$ migration_name'? Вы уверены, что это строка? _ (Я думаю, это так, но .. вы знаете ... волшебство) _ –

+0

Обновите вопрос с помощью значений '$ from' и' $ to', которые приводят к ошибке. –

+0

@AlexBlex обновлен. – BoooYaKa

ответ

1

Вы можете иметь пробелы в вашем имени. Вы можете удалить их, используя обрезку:

public function generate_migration_name($from, $to) { 
    $current_date = Date('Y_m_d_His'); 
    return $current_date."_create_msl_".trim($from)."_to_".trim($to)."_table.php"; 
} 
+0

отделка сделал работа! Я попытался удалить пробелы с str_replace, но без успеха. Спасибо! – BoooYaKa

0

Файл, который вы пытаетесь создать не на сервере или проверить права доступа к файлам

+0

Когда я пытаюсь использовать функцию с фиксированной строкой, она успешно создает файл, поэтому я не думаю, что он имеет отношение к файлу, который не существует или имеет разрешения. – BoooYaKa