Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
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
Помогите пожалуйста понять
Не в сети
Не в сети
И получаю ошибку 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.
Не в сети
Спасибо большое !:)
Не в сети
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети