h4kuna / fio

Read and send payment order for FIO bank, PSR-17 ready
54 stars 25 forks source link

Knihovna se snaží ukládat do ///tmp//... #26

Closed zraly closed 7 years ago

zraly commented 7 years ago

Ahoj,

po nasazení dostávám následující warningy:

PHP Warning: fopen(nette.safe:///tmp//d8481e5151a041de4ed7d30480f5d031): failed to open stream: "Nette\Utils\SafeStream::stream_open" call failed in ..../vendor/h4kuna/fio/src/Request/Queue.php:75

Proč se snaží ukládat na toto místo? Preferoval bych ukládání do tempu aplikace.

h4kuna commented 7 years ago

Ukládání se musí nastavit, pokud používáš nette a po dlouhý době jsi aktualizoval tak rozšíření pro nette bylo přesunuto h4kuna/fio-nette. Kde po zaregistrování extension se to nastaví.

Pokud nepoužíváš nette tak se temp musí nastavit a výchozí je /tmp.

EDIT Oprava odkazu

h4kuna commented 7 years ago

Jaj asi máš pravdu, možná jsi našel chybu. Dneska to opravím.

h4kuna commented 7 years ago

Opravy jsou v mastru, jak fio tak fio-nette až mi potvrdíš že to jde udělám release.

zraly commented 7 years ago

Díky moc, jdu to nasadit.

h4kuna commented 7 years ago

fixed @0c21fc7bac26

zraly commented 7 years ago

Tak problém to bohužel nevyřešilo, stále přetrvává :(

h4kuna commented 7 years ago

To je divný. Protože předtím tam bylo napevno sys_get_temp_dir(). To je nyní upraveno, aby to tak nebylo, což byl ten problém. Používáš fio-nette nebo jen fio? Jak tvoříš ty instance? Máš opravdu aktuální stable?

zraly commented 7 years ago

Používám pouze fio (protože mám dva různé fio účty a fio-nette dovolí nastavit pouze jeden přes config), je tam aktuální verze, díval jsem se přímo na FTP a stále dostávám tyto chyby:

[2016-12-22 23-15-00] PHP Warning: fopen(): open_basedir restriction in effect. File(/tmp//8b1bf2ed1f167f6437395ef46905de1d) is not within the allowed path(s): (...../vendor/nette/safe-stream/src/SafeStream/SafeStream.php:95 @ ..... [2016-12-22 23-15-00] PHP Warning: fopen(/tmp//8b1bf2ed1f167f6437395ef46905de1d): failed to open stream: Operation not permitted in /...../vendor/nette/safe-stream/src/SafeStream/SafeStream.php:95 @ ...... [2016-12-22 23-15-00] PHP Warning: fopen(nette.safe:///tmp//8b1bf2ed1f167f6437395ef46905de1d): failed to open stream: "Nette\Utils\SafeStream::stream_open" call failed in ...../vendor/h4kuna/fio/src/Request/Queue.php:83 @ ...... [2016-12-22 23-15-00] PHP Warning: fclose() expects parameter 1 to be resource, boolean given in ...../vendor/h4kuna/fio/src/Request/Queue.php:102 @ ..... [2016-12-22 23-15-00] PHP Warning: touch(): open_basedir restriction in effect. File(/tmp//8b1bf2ed1f167f6437395ef46905de1d) is not within the allowed path(s): (......) in ...../vendor/h4kuna/fio/src/Request/Queue.php:103 @ ..... [2016-12-22 23-15-00] PHP Warning: fopen(): open_basedir restriction in effect. File(/tmp//d8481e5151a041de4ed7d30480f5d031) is not within the allowed path(s): (.....) in ....../vendor/nette/safe-stream/src/SafeStream/SafeStream.php:95 @ ...... [2016-12-22 23-15-00] PHP Warning: fopen(/tmp//d8481e5151a041de4ed7d30480f5d031): failed to open stream: Operation not permitted in ....../vendor/nette/safe-stream/src/SafeStream/SafeStream.php:95 @ ...... [2016-12-22 23-15-00] PHP Warning: fopen(nette.safe:///tmp//d8481e5151a041de4ed7d30480f5d031): failed to open stream: "Nette\Utils\SafeStream::stream_open" call failed in ......./vendor/h4kuna/fio/src/Request/Queue.php:83 @ ...... [2016-12-22 23-15-00] PHP Warning: touch(): open_basedir restriction in effect. File(/tmp//d8481e5151a041de4ed7d30480f5d031) is not within the allowed path(s): (...) in ....../vendor/h4kuna/fio/src/Request/Queue.php:103 @ .....

h4kuna commented 7 years ago

fio-nette dovolí více účtů cca od ledna 2016. Koukni do README.md

fioExtension:
    accounts:
        my-alias: # name for select account
            account: 2600267402/2010
            token: 5asd64as5d46ad5a6
        next-alias:
            account: 123456789/3216
            token: 6a4sd54asadsasde564

Pokud používáš fio tak asi používáš FioFactory. Máš správně vyplněný třetí parametr kontruktoru? Ten právě přibyl poslední úpravou.

zraly commented 7 years ago

Aha, ten jsem vyplněný neměl. Lze nějak použít fio-nette, i když účty nemám v configu, ale v databázi?

h4kuna commented 7 years ago

Ano, služba která připravuje účty se jmenuje fioExtension.accounts tak ji nastav vlastní factory, ale musí vracet h4kuna\Fio\Account\AccountCollection. Doporučuju to nějak kešovat, aby pokaždý nesahal na databazi.

services:
    fioExtension.accounts:
        factory: @MyFactoryClass::create

EDIT Ikdyž on sáhne na databázi až když si vyžádáš h4kuna\Fio\Nette\FioFactory. Takže kešovat asi není potřeba.

h4kuna commented 7 years ago

Nějak takto:

<?php

class AccounFactory
{

    /** @var \Nette\Database\Context */
    private $context;

    public function __construct(\Nette\Database\Context $context)
    {
        $this->context = $context;
    }

    public function create()
    {
        $accounts = new \h4kuna\Fio\Account\AccountCollection();
        foreach ($this->context->table('accounts') as $account) {
            $accounts->addAccount($account->name, new \h4kuna\Fio\Account\FioAccount($account->accountName, $account->accountToken));
        }

        return $accounts;
    }

}

V configu

services:
    - AccounFactory
    fioExtension.accounts:
        factory: @AccounFactory::create
h4kuna commented 7 years ago

Předchozí příklad jsem ještě upravil. Píšu to z hlavy tak snad to bude funkční.

zraly commented 7 years ago

Ten config má být asi trochu jinak. Mám:

services:
    fioAccountFactory: Fakturace\FioAccountFactory
    fioExtension.accounts:
        factory: @fioAccountFactory::create(@supplierRepository)

extensions:
    fioExtension: h4kuna\Fio\Nette\DI\FioExtension

Ale dostávám chybu Unknown type of service 'fioExtension.accounts', declare return type of factory method (for PHP 5 use annotation @return)

h4kuna commented 7 years ago

Podle tý chyby bych doplnil anotaci return k ty create metodě ono nette z nich čte pokud není definovaná class.