19 заметок с тегом

php

Импорт csv-файла и обработка в php

$csvFile = file('/home/oleg/data.csv');
$array = array_map(function($input) {return str_getcsv($input, ";");}, $csvFile );

foreach ($array as $item) {
    $object = new CustomClass();
    $object->name = (string) $item[0];
    $object->title = (string) $item[1];
    $object->price = (float) $item[2];
    $object->save();
}

Что из себя представляет функция str_getcsv — посмотрите в документации

28 августа   csv   php   str_getcsv

Exception: DateTimeZone::__construct(): Unknown or bad timezone (Europe/Saratov)

Если поймали такую ошибку, а при этом вы открываете сайт php.net и там такой часовой пояс есть, значит необходимо проверить timezonedb на сайте.

Откройте phpinfo() и увидите что-то подобное:

Нас интересует «Olson» Timezone Database Version

1) Если PECL на сервере не установлен, то:

sudo apt-get install php-pear

2) В зависимости от версии php необходимо, чтобы было установлено php-dev.
У меня 7.1, потому я сделаю так:

sudo apt install php7.1-dev

3) Делаем апдейт:

sudo pecl upgrade timezonedb

4) В результате увидим:

5) Значит необходимо открыть php.ini и прописать extension=timezonedb.so

sudo nano /etc/php/7.1/apache2/php.ini

Добавляем в конце файла, сохраняем изменения и сделаем рестарт апача:

sudo service apache2 restart

6) Проверяем phpinfo() и видим изменения:
«Olson» Timezone Database Version 2018.4

Наслаждаемся!

Как исправить ошибку Could not parse version constraint >=~2: Invalid version string «~2»

Вот так делаешь composer update (или install), а получаешь такую ошибку:

[UnexpectedValueException]
Could not parse version constraint >=~2: Invalid version string "~2"

Необходимо выполнить следующее:

php composer.phar global update

а после уже можно выполнить update или install:

php composer.phar update
2018   composer   php
2017   apache2   nginx   php   php5.6   php7.1

Конвертируем поле json в jsonb в PostgreSQL

На чистом SQL это можно сделать так:

ALTER TABLE table_name ALTER COLUMN column_with_json SET DATA TYPE jsonb USING column_with_json::jsonb

Если делать миграцию на Yii2, то можно сделать так:

public function safeUp()
{
    $this->execute('ALTER TABLE table_name ALTER COLUMN column_with_json SET DATA TYPE jsonb USING column_with_json::jsonb');
}
2017   alter column   alter table   json   jsonb   migrate   php   PostgreSQL   sql

Текущее время в формате TIMESTAMP на PHP

Если необходимо знать с учетом часового пояса, то можно сделать это так:

$currentTime = (new \DateTime())
    ->setTimezone(new \DateTimeZone('Europe/Moscow'))
    ->getTimestamp();

Конечно же, часовой пояс используйте свой

Как побороть ошибку Bad Request (#400): Не удалось проверить переданные данные

Такая ошибка часто возникает в случае асинхронного запроса. Все дело в том, что где-то в родительском контроллере включена проверка на Csrf.

Если в текущем контроллере отключить валидацию нельзя (н-р, из-за того, что другие методы этого класса нуждаются в этой проверке), то можно реализовать новый контроллер:

namespace app\controllers;


use Yii;
use yii\web\Controller;
use yii\filters\VerbFilter;

class NewController extends Controller
{
    public $enableCsrfValidation = false;

    public function behaviors()
    {
        return [
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'delete' => ['POST'],
                ],
            ],
        ];
    }
    
    ...
}

Вас как раз должно интересовать свойство $enableCsrfValidation.

2017   Bad Request   enableCsrfValidation   http400   php   yii2
2017   json   php   yii2

Получить чистый sql-запрос из AR и AQ в Yii2

Собираем запрос, используя Active Record или Active Query и чтобы убедиться в правильности запроса смотрим на сам SQL.

// собираем AR
$orders = Order::find()->where(['status' => 1])->orderBy('date ASC');

// Получим sql в чистом виде:
$orders->createCommand()->getRawSql();

И увидим результат:

SELECT * FROM "order" WHERE "status"=1 ORDER BY "date"
2017   active query   active record   AR   php   sql   yii2

Tcpdf. Как добавить свой шрифт

Многим известна библиотека Tcpdf. Для любознательных смотреть здесь.
Нас интересует директория tools.

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

php /var/www/html/tcpdf/tools/tcpdf_addfont.php -i CustomFont.ttf

В результате увидим следующее:

>>> Process successfully completed!

Новые файлы мы сможем увидеть в директории /tcpdf/fonts/

Чтобы использовать новый шрифт достаточно:

$pdf->SetFont('customfont', '', 14, '', false);
2016   font   php   tcpdf
Ctrl + ↓ Ранее