Categories
General

Twitter Card not working ERROR: Fetching the page failed because other errors.

If you are experiencing the issue below , you can try here

https://cards-dev.twitter.com/validator

Enabling AES128 as an ssl cipher will allow the Twitterbot to connect.

See different forums confirming the solutions

https://twittercommunity.com/t/twitter-card-error-fetching-the-page-failed-because-other-errors/112895/7

If you are using cloudfare, please see configuration

See more information about cloudfare

https://developers.cloudflare.com/ssl/ssl-tls/cipher-suites

then it will work

Categories
SqLite

How to fix/open Unable to open database “xxxxxsqlite”: file is encrypted or is not a database ?

It means that your are trying to open with SQLITE rather than SQLITE 3

Categories
SqLite

How to add a new column to an existing sqlite database (sqlite3) ?

ALTER TABLE table_name ADD COLUMN column_definition;

Categories
Technical

How to change root password in Digital Ocean ?

Well it may come as a surprise when you figure that you need the root password of your droplet to do advance configuration on your server. Find below How to change the root password of your droplet in Digital Ocean ?

Categories
Postgres

How to PHP Singleton with different schema Postgres Database connection PDO ?

/**
 * Class StorageService
 *
 * @package App\Core\Services
 */
class StorageService extends \App\Core\Classes\Service
{

    private static $instance = null;
    private $storageConfigs = false;
    private $dbConnections = false;

    public $schema ;
    public $database_host ;
    public $database_port ;
    public $database_name ;
    public $database_user ;
    public $newConnection ;


    public function __construct($schema = 'api')
    {

        $dbConfigs = $this->storageConfigs()['databases'];
        
        $dbConfig = $dbConfigs[$schema];

        $this->schema = $schema;
        $this->database_host = $dbConfig['database_host'];
        $this->database_port = $dbConfig['database_port'];
        $this->database_name = $dbConfig['database_name'];
        $this->database_user = $dbConfig['database_user'];
        $database_password  = $dbConfig['database_password'];
        

        $dsn = "pgsql:host={$this->database_host};port={$this->database_port};dbname={$this->database_name};";
        $pdoOpts =
            [
                \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
                \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC
            ];

        try {
            $this->newConnection = new \PDO($dsn, $this->database_user, $database_password, $pdoOpts);

        } catch (\Throwable $e) {

            /**
             * Add Exception error
             *
             * @date July 15th 2021
             * @author David Raleche
             */
            $error = 'MAPI CANT CONNECT DATABASE schema'.$schema
                .' DSN: '.$dsn
                .' USER: '.$this->database_user
                .' PASSWORD'.$database_password
                .' '.(string) $pdoOpts
                . '  ' .$e->getMessage();
            HelperService::logger('critical', $error);
            throw new \Exception('Database connection issue '.$e->getMessage(), 500);
        }



    }


    /**
     * Storage Configs
     *
     * @return bool|mixed
     */
    private function storageConfigs()
    {
        if ($this->storageConfigs === false) {
            $this->storageConfigs = yaml_parse_file(__DIR__ . '/../../config/storage.yaml');
        }
        return $this->storageConfigs;
    }

    /**
     * Get Db connection
     *
     * @param string $schema
     * @param bool $allowShared
     *
     * @return bool|\PDO
     */
    
    public function getConnection() : \PDO
    {
        return $this->newConnection;
    }


    public static function getInstance($schema)
    {
        if(!self::$instance )
        {
            self::$instance = new StorageService($schema);
        }

        if ( self::$instance->schema !== $schema)
        {
            self::$instance = new StorageService($schema);
        }

        return self::$instance;
    }
Categories
Technical

Load Testing / Performance Testing

Tools required in a LAMP stack environment for load testing are Jmeter, Blazemeter

Categories
Technical

How to find a string in the php.ini or phpinfo() ?

SSH into the machine and simply type the command below :

php -i | grep “your_string”

Categories
PHPUnit

Phpunit stops unexpectedly without any message or error

My solution for that issue is to first identify which phpUnit test is failing this way

Then set a try-catch methodology in your code to analyze the error

From experience it is likely due to php or phpUnit running out of memory probably cause by a recursive pattern in the code

Encapsulate the code with a try catch see below

try {

      [Code to encapsulate]

} catch (\Throwable $e) {

var_dump($e->getCode());
var_dump($e->getMessage());

}

An \Exception is not likely to be caught in this type of error

Categories
Laravel Valet

How to fix valet ? Laravel Valet – This Site Can’t Be Reached

How to fix ?

NOTICE: [pool valet] ‘user’ directive is ignored when FPM is not running as root

or

ERROR: FPM initialization failed

or

Laravel Valet – This Site Can’t Be Reached

or

valet nginx 137 upstream timed out (60: Operation timed out) while reading response header from upstream, client: 127.0.0.1,

Solution

valet uninstall
rm -rf ~/.valet
rm -rf ~/.config/valet
valet install
valet link
valet open
Categories
Technical

MACOS – How to reset PATH ?

Default PATH David Raleche

 PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin/:~/.composer/vendor/bin

Basic and Essential PATH

PATH=/usr/bin:/bin:/usr/sbin:/sbin
export PATH