Kategorien
PHPUnit Server Administration

Travis CI: No Rakefile found (looking for: rakefile, Rakefile, rakefile.rb, Rakefile.rb)

Bei der sehr kryptischen Fehlermeldung in Travis CI:

No Rakefile found (looking for: rakefile, Rakefile, rakefile.rb, Rakefile.rb)

handlet es sich um ein Problem mit falschen Einrückungen im travis.yml File:

matrix:
  include:
    - php: 5.6
      env:
        - SYMFONY_VERSION='3.4.*'

Ein Leerzeichen zu wenig in der Zeile – SYMFONY_VERSION=’3.4.*‘ und es kommt zu diesem wenig aufschlussreichen Fehler.

Kategorien
PHP PHP 7

PHP: Parse Error: syntax error, unexpected ‚:‘, expecting ‚;‘ or ‚{‚

Bei der sehr kryptischen  Fehlermeldung

Parse Error: syntax error, unexpected ':', expecting ';' or '{'

handelt es sich in den meisten Fällen um eine PHP7 Inkompatibilität.

Der auszuführende Code enthält ein Sprach-Feature, was erst unter PHP7 verfügbar ist:

Return Type Definitions (Definition des Rückgabewertes). Beispiel:

function myFuntion($input): array
{
    return ['foo'];
}

Damit kann man festelegen, dass die Funktion ein Array zurückgeben muss, sonst wird ein TypeErrror ausgelöst.

Um den Code in einer niedrigeren PHP Version zum Laufen zu bringen, muss man die Return Type Definition entfernen:

function myFuntion($input)
{
    return ['foo'];
}

Spezialfall: composer

Kategorien
Server Administration Webdeveloper Tools

Eine Datei über den Namen suchen auf Linux

Um irgendeine Datei in einem beliebigen Verzeichnis zu finden, kann man den find-Befehl verwenden:

sudo find / -name 'datei.php'
Kategorien
PHP PHPUnit Testing

PHP Unit Testing Präsentation

Diese Präsentation habe ich im Rahmen meiner Arbeit bei Air Berlin zum Thema Unit und Integration Testing gehalten.

Da es Air Berlin nun nicht mehr gibt, stelle ich gern diese Informationen allen zur Verfügung.

Download Testing Powerpoint Präsentation

Kategorien
PHP Server Administration

PHPLdap Extension installieren unter Linux

Um die Ldap PHP Extension zu installieren, kann man unter Linux / Ubuntu einfach den Befehl:

sudo apt-get install php-ldap
Kategorien
Server Administration

Laravel Homestead installieren von PHP Ondrej Packages

Wenn man in einer Homestead Box versucht Ondrej Packages zu installieren bekommt die Fehlermeldung:

sudo apt-get install php-ldap
Error:1 http://ppa.launchpad.net/ondrej/php/ubuntu xenial/main amd64 php7.1-ldap amd64 7.1.10-1+ubuntu16.04.1+deb.sury.org+1   404  Not Found

Dies liegt daran das das Ondrej Repository nicht bekannt ist in der Box. Es kann hinzugefügt werden mit:

sudo add-apt-repository -y ppa:ondrej/php
sudo apt-get -y update
sudo apt-get install php-ldap
Kategorien
Symfony Testing

Symfony 3 Test-Datenbank einrichten für Integration Tests

In Symofny wird automatisch beim Ausführen von Tests die  app/config/parameters_test.yml geladen.
Dort sollte dann eine andere Datenbank angegeben werden, der Einfachheit halber mit demselben Datenbank User:

database_host: same_as_dev
database_port: same_as_dev
database_name: test_db
database_user: same_as_dev
database_password: same_as_dev

Dann müssen auf der Konsole folgende Befehle ausgeführt werden:
Cache leeren:
php bin/console cache:clear –env=test

Datenbank erstellen
php bin/console doctrine:database:create –env=test

Tabellen erstellen
hp bin/console doctrine:schema:update –env=test –force

Dann könnne Fixtures geladen werden und Integration Tests geschrieben werden.

 

Kategorien
Symfony

Syfmony 3.3. – Wie man ein Repository als Service injeziert mittels Dependency Injection

In Symfony 3 wird standardmäßig immer der EntityManager injected, um dann darüber das entsprechende Repository zur Verfügung zu bekommen.

Meistens wird aber nur genau ein Repository benötigt und der Code und die Tests werden aufgebläht.

Es gibt eine einfach Möglichkeit in der Configuration einen Service von einem Respository zu erstellen:

service.repository.name:
 class: 'AppBundle\Repository\MyEntity'
 factory: 'Doctrine\ORM\EntityManagerInterface:getRepository'
 arguments: ['AppBundle\Entity\MyEntity']
Kategorien
Server Administration Webdeveloper Tools

SSL für alle und kostenlos mit certbot.eff.org

HTTPS und SSL ist wichtig für jede Webseite und oft ein lästiger Zeitvertreib, wenn die Zertifikate ablaufen und man ganz schnell die aktuellen Zertifikate installieren muss.

Eine einfache und ksotenlose Alternative ist Let’s Encrypt, die einen kostenlosen Service anbieten mit dem man nicht nur sehr schnell (5 Minuten) SSL Zertifikate installieren kann, sonder der sich auch um die Aktualisierung der Zertifikate kümmert, die alle 90 Tage ablaufen.

Dazu installiert man einen Client auf der Console namens certbot, der automatisch die Zertifikate beim hauseigenen Webserver/Loadbalancer einbindet (nginx, apache) und später per Cronjob aktuell hält.

Eine tolle Sache, habe ich auf der Seite baby-taschenrechner.de im Live Einsatz und bin sehr zufrieden.

Kategorien
JavaScript React Native

React Native für hybride native Apps

Ein sehr interssante Möglichkeit um native Apps für Android und iOS zu schreiben bietet React Native von Facebook, damit wird zwar in Javascript und react.js gecodet, aber es werden damit native Funktionen benutzt wie bei Titanium und im Gegensatz zu Phonegap.

Sicherlich eine höchst interessante Alternative zu Titanium und Phonegap.