Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 13.01.2018 09:53:04

fopen(/seeds_files/cities.txt): failed to open stream: No such file or

fopen(/seeds_files/cities.txt): failed to open stream: No such file or directory
Я переношу сайт с одного фреймворка на другой
Есть два файла в одном я забираю из второй базы таблицу и серриализую массив
    public function cities(){
        //get all data from cities table
        $someModel = new City();

        $someModel->setConnection('mysql2');

        /*$data['cities']=DB::connection('mysql2')->table('cities')->get();*/
        $data['cities']=$someModel->get();
        $myarray=$data['cities']->toArray();
        dd($_SERVER['DOCUMENT_ROOT']);
        $file_pointer = $_SERVER['DOCUMENT_ROOT']."/seeds_files/cities.txt";
        if (!$file_handle = fopen($file_pointer, 'wb')) exit;
        flock($file_handle, LOCK_EX);
        if (fwrite($file_handle, serialize($myarray)) === false) exit;
        flock($file_handle, LOCK_UN);
        fclose($file_handle);
        echo '<h2>Serialize success!</h2>';

        if ( !$file_handle = fopen($file_pointer, 'rb') ) exit;
        $myarrayecho = unserialize( fread($file_handle, filesize($file_pointer)) );
        fclose($file_handle);

        echo '<h2>Serialize back:</h2>';
        echo '<pre>';
        var_dump($myarrayecho);
//print_r($myarrayecho);
//var_export($myarrayecho);
        echo '</pre>';

    }
Здесь отлично открывается файл на запись $file_pointer = $_SERVER['DOCUMENT_ROOT']."/seeds_files/cities.txt";

А во втором файле в Сиддировании CitiesSeederTable
Я пытаюсь открыть этот файл на чтение и засидировать инфу из файла
class CitiesTableSeeder extends Seeder
{

    public function run()
    {

        $file_pointer = $_SERVER['DOCUMENT_ROOT']."/seeds_files/cities.txt";
        if ( !$file_handle = fopen($file_pointer, 'rb') ) exit;
        $dataSet = unserialize( fread($file_handle, filesize($file_pointer)) );
        fclose($file_handle);
        DB::table('cities')->insert($dataSet);
    }
}
И получаю ошибку fopen(/seeds_files/cities.txt): failed to open stream: No such file or directory
когда пытаюсь выполнить команду php artisan db:seed --class=CitiesTableSeeder

Помогите пожалуйста понять

Не в сети

#2 13.01.2018 10:24:34

Re: fopen(/seeds_files/cities.txt): failed to open stream: No such file or

Если файл в корне Laravel проекта, тогда:

PHP
$file_pointer base_path('seeds_files/cities.txt');

Не в сети

#3 13.01.2018 10:38:36

Re: fopen(/seeds_files/cities.txt): failed to open stream: No such file or

imediasun пишет:

И получаю ошибку fopen(/seeds_files/cities.txt): failed to open stream: No such file or directory

ты видишь, что путь указан от корня? это значит, что $_SERVER['DOCUMENT_ROOT'] пустой. реально когда с консоли запускается скрипт, нет никакого $_SERVER !
можешь указывать путь относительно папки со скриптом — через константу __DIR__. что-то вроде

$base = __DIR__ . '/..';
fopen($base . $file_pointer, 'rb')

There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

#4 13.01.2018 17:29:43

Re: fopen(/seeds_files/cities.txt): failed to open stream: No such file or

Спасибо большое !:)

Не в сети

#5 13.01.2018 18:24:47

Re: fopen(/seeds_files/cities.txt): failed to open stream: No such file or

o9DzVYHjTHJryo51wiVv2dH067dABZ.png


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

Подвал раздела