Setting PHP.INI path (or file) for PHP CLI shell scripts

Running a PHP script from the command-line, or CLI, is quite useful at times and is often used to perform some automated task, like a CRON cleanup script, to send out reminders, etc.

It’s common that these CLI scripts need some, but possibly not all, settings that are similar to the main application’s. I may, for example want to include the database configuration settings shared with the main application. So I often create a separate php.ini file for this purpose.

Running /usr/bin/php -c /my/very/special/path cronScript.php is simple enough, but what if I want to be able to create an “executable” PHP shell script? The obvious answer would be something like:

#!/usr/bin/php -c /my/very/special/path

at the top of the .php file, followed by my PHP code, right? Except that may not do what you want. I could not get the PHP interpreter to load anything in /my/very/special/path by using the above construct, even if it works from the actual command-line. After banging my head against the wall for a while, this turns out to work for these “shell scripts”:

#!/usr/bin/php -c=/my/very/special/path

Note the use of the = (equal) sign between the -c and the path (or file).

Carry on.

Coding for Microsoft browsers like Internet Explorer and Edge

Having been doing battles with things like Internet Explorer 4 (yes, I’m that old), it seems to me like Microsoft have really gotten themselves into a bind when it comes to Edge.

With a user-agent string like this:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299

It’s no wonder Microsoft seems to be suffering from a split personality when it comes to its browser(s).

Once and for all Microsoft, please just join either of the Chrome/Chromimum/Opera/Firefox projects. Please?

Hur kommunicerar du med människor i din värld?

Hur kommunicerar du digitalt med andra människor idag? Själv använder jag en mängd olika redskap och verktyg. Ibland känns det som att det är lite väl många att hålla reda på. Jag har på sista tiden börjat städa bland de appar och programvaror jag använder för att sköta min dagliga kommunikation med kunder, kollegor, vänner och familj.

Det är en djungel och salig röra att hålla reda på alla alternativ, deras för- och nackdelar och naturligtvis vem man kan kommunicera med genom vilket verktyg. De stora jättarna Microsoft, Google och Facebook, räknar med att du väljer deras verktyg eftersom du då “når de flesta” av dina kontakter. Likaså tycker förmodligen Kik och SnapChat att du skall välja just deras verktyg baserat på antalet användare som använder just deras program.

Det blir verkligen inte lättare av att de stora företagen köper upp andra företag som t ex Microsoft som äger Skype, Facebook som äger WhatsApp, osv.

I gräsrotskretsar lever även äldre verktyg som ICQ, IRC m fl vidare samtidigt som företagsvärlden börjat få upp ögonen för samarbetsverktyg eller “chattar” som Slack och Mattermost. Även verktyg som från början inte hade som syfte att tillhandahålla “chat”, som t ex Keybase, har nu valt att inkludera krypterad kommunikation mellan personer och i grupper.

Detta är inte en artikel om övervakning, GDPR eller personlig integritet och rätten till att inte bli avlyssnad. Men dessa ämnen spelar till viss del in i åtminstone mina val av kommunikationsverktyg. Att kunna kommunicera med människor i min omvärld är såklart också väldigt viktigt, det spelar föga roll att jag har den “säkraste” av alla appar om ingen annan jag kommunicerar med använder samma, eller en kompatibel, programvara. Helst skall vi kunna kommunicera med varandra oavsett om personerna använder Windows, Mac och/eller Linux eller som det brukar heta i den mobila världen, Android eller iPhone.

När jag började med datakommunikation någon gång runt 1983, som sedemera utvecklades till det vi idag kallar för Internet, så fanns det inte så många alternativ och kommunikationen var långsam. Idag kan man kopiera hela sin dators innehåll till en annan dator två tusen mil därifrån på relativt kort tid. Vi skickar mer information än någonsin, men vi kanske skulle fundera lite på hur vår information skickas och vem som kan komma över den?

Så vad är då mina personliga val och varför väljer jag dem?

Jag har mer eller mindre slutat att använda SMS, MMS och WhatsApp. Facebook Messenger är inte installerad på någon av mina enheter. I de fall jag får ett SMS till mobilen, eller någon skickar mig ett meddelande med WhatsApp så tar jag emot dem och svarar på dem på samma sätt, men det är inga verktyg jag väljer i första hand.

Som kommunikationsverktyg använder jag i första hand Signal eller Keybase. De är bra på olika saker och är olika mycket utvecklade; båda använder sig av krypterad kommunikation och båda är relativt lätta att använda, även om Keybase lämnar en del att önska för icke tekniska användare. Du kan även låta Signal hantera dina SMS och MMS i telefonen istället för telefonens standardapplikation.

För kommunikation i grupper och inom företaget väljer jag utan tvekan Mattermost. En applikation som utvecklas i rasande fart med en stabil samling utvecklare och företag bakom. Mattermost påminner i stora drag om Slack och är kompatibelt med bryggor, tillägg och integrationer som är skrivna för Slack. Vi har ersatt en hel del av vår interna e-postkommunikation på företaget med just Mattermost. Den här typen av verktyg anser jag inte lämpad för all typ av kommunikation inom företag, men som tur är finns det fler verktyg. Mattermost finns som webbapplikation, som mobilapp samt som skrivbordsapplikation för Windows, Mac och Linux. En stor fördel med Mattermost är att vi kan ha det på egna servrar i Sverige och/eller EU samt att produkten är så kallad “öppen källkod”, vilket är något vi alltid företspråkat på företaget.

Mängden programvaror som tillhandahåller “kommunikation” är häpnadsväckande och fler verkar dyka upp varje dag.

Ett av de kommunikationssätten jag inte pratat om är e-post, som i mitt fall lever kvar som en stor del av min dagliga kommunikation. E-post är fortfarande i särklass det kommunikationssätt som flest människor, myndigheter och företag använder sig av. Här finns det naturligtvis också många valmöjligheter både bland leverantörer och tjänster. Kan du skicka och ta emot krypterad e-post? Har din e-postleverantör en bra skräppostfiltrering? Lagras din e-post i Sverige och/eller EU, eller ligger den i “ett stort moln” någonstans i USA? Kan du få hjälp med det du behöver från din e-postleverantör som att sätta upp fungerande regler och automatisering för att göra din dag lättare? Och så vidare. I mitt fall så måste min e-post fungera från både Windows och Linux, samt min mobiltelefon och surfplatta. Jag måste även kunna använda en vanlig webbläsare för att använda min e-post och ändå få en snygg och smidig upplevelse.

Jag är bortskämd med att kunna använda en tjänst, Work2Go, från företaget jag arbetar på för e-post så jag vet exakt var och hur e-posten lagras. Alla har inte den valmöjligheten, men jag tycker gott man kan tänka ett varv extra kring hur ens personliga e-post och företagets e-post hanteras idag och imorgon. Inte minst med tanke på att GDPR kommer att förändra både vad vi får lagra av vår kommunikation, hur det lagras och hur länge det får lagras.

Lycka till med den digitala kommunikationen!

When your DHCP client has lease renewal issues, Sendmail may be at fault

On one of our VPS instances, I noticed some seriously erratic behavior with the DHCP client taking a long time to renew its leases when the machine was booting up, or failing to renew at all.

It took some time before I noticed this output from dhclient:

/sbin/dhclient-script: 28: .: Can't open /usr/share/sendmail/dynamic

This didn’t make any sense as we never have and never will install sendmail on any VPS. So using apt, I was able to see that one or more of the sendmail packages had “incomplete” status (displayed as ‘c’ in aptitude if you’re using that), i.e. it was not installed but some configuration files remain. After purging those packages, dhclient had no problems whatsoever in renewing the leases.

Who knew sendmail could even trash DHCP 🙂

 

 

Fixing some keyboard shortcuts in XFCE (Ctrl+F5 and Ctrl+Alt+T)

Old habits die hard, or something like that 🙂 Cloning one of my Ubuntu Desktop set-ups to a VirtualBox environment, I switched to using XFCE4 for my desktop (“xubuntu”). This works very well and the transition is minor. Most of the applications I use work very well in both Gnome and XFCE, apart from two keyboard shortcuts I use very often.

Ctrl+F5

Ctrl+F5 to force a page/cache re-load in many browsers is attached to workspace switching in XFCE. I only have four workspaces (and rarely use more than two), so I don’t need this shortcut.

To make Ctrl+F5 work as expected (for me) in the browsers, simply go to the Application Menu or “Start” menu (upper left corner in XFCE by default), scroll down to Settings and choose “Settings Manager”. In there, select “Window Manager”. Move to the “Keyboard” tab and scroll the list until you find something with Ctrl+F5 in the “shortcut” column. For me, this was defined as “Woprkspace 5”. Choose to Clear the shortcut when the selection bar is in the right place. Click “Close” and voila, your Ctrl+F5 reload shortcut now works again.

Ctrl+Alt+T

I don’t know how people survive without a shortcut for opening a Terminal, but I guess they do. From Gnome, I’ve been used to being able to open up a new Terminal quickly by pressing Ctrl+Alt+T. This does not work in XFCE by default, but is easily remedied using a method similar to that of Ctrl+F5 above.

To assign Ctrl+Alt+T to open a new Terminal in XFCE, go to the Application Menu or “Start” menu (same upper left corner as before), scroll down to Settings and choose “Settings Manager”. In there, select “Keyboard”. Move to the “Application Shortcuts” tab and click the “Add” button. Now specify the application you want to open for your shortcut, in my case xfce4-terminal, and click OK. XFCE will now ask you for the desired keyboard shortcut, in my case Ctrl+Alt+T. And we’re done!

If you want to open the “preferred application” for “Terminal” in XFCE, instead of a specific terminal application, go and lookup how to use “exo-open”, which is a way to say “Please open my preferred application for …” in XFCE.

Enjoy your shortcuts!

To CDN or not to CDN, are Content Distribution Networks always good?

CDN is supposed to be fast, right? CDN is supposed to off-load your servers, right? CDN is supposed to be geographically boosted for the visitor, right? But when you have 3-6 *different* CDN sources in your various scripts/include list, and they’re all HTTPS (as they should be), the browser will perform a TLS/SSL handshake 3-6 times when it loads your website. This is by no means fast. In fact, if you’re tweaking your website for below-one-second-load-times, you may be barking up the wrong tree.

If you instead place those resources locally, on your own server secured with HTTPS, you get one session handshake. And since most “clever” sites tell the browser(s) to cache static resources like .js, images, and so on, I’m not so sure I think CDN is the way to go for many websites if you use different CDN resources on the same website, that is.

But hey, what do I know, I don’t run the CDN companies 🙂

Om telefoni och telefonisystem

Jag såg ett inlägg på sociala medier som diskuterade att byta Telefonileverantör och byta telefonisystem.

Man skall byta till en leverantör och ett system som innebär att man lägger ned mer tid på att använda telefonisystemet än på att underhålla, felsöka, uppgradera och bygga systemet. Detta kan naturligtvis sägas om i princip alla IT-baserade och andra system man köper in eller använder sig av. I fallet telefonisystem så behöver “att använda” inte nödvändigtvis innebära att man pratar i telefon, det kan ju också innehålla smart funktionalitet som gör att man uppnår sina kommunikationsbehov och nyckeltal genom att “prata smartare” (webbkopplingar, telefonist på distans, callcenter, kopplingar till ärendehantering, osv). Det är ju också en fördel om man kan sänka sina kostnader.

Jag har varit med och implementerat några telefonilösningar från olika “Telefonileverantörer” hos olika kunder och jag kan väl säga att många lämnar ganska mycket att önska. Funktionaliteten i systemen och plattformarna är förhållandevis bra överlag tycker jag. Däremot tror jag att många kunder saknar insikt i hur mycket underhåll, support och felsökning ett byte av telefonisystem kan innebära. Telefonileverantören kan inte alltid lastas för detta, men borde i många fall kunna vara mycket tydligare.

En organisation som går från en leverantör till en annan kan helt plötsligt finna sig i en situation där svaret från telefonileverantören på frågan om varför Headsets inte fungerar blir “Vi har inte stöd för det märket”, trots att det rör sig om t ex Bluetooth och Windows eller “Det är inte telefoniplattformen som är problemet, så vi kan tyvärr inte hjälpa er.” Man skall vara väldigt på det klara med vad man kan förvänta sig. Och trots tydliga avgränsningar i avtal så blir det ändå fel ibland.

I en perfekt värld ser en dator ut exakt så som leverantören förväntar sig, men då de flesta företag idag har flera leverantörer så är detta nästa omöjligt att uppnå. Med leverantör menar jag då inte enbart “IT-leverantören som man skriver avtal med för sitt dagliga IT-stöd” utan även de leverantörer som tillverkar komponenter eller delar av det IT-stöd en organisation använder. Detta kan t ex vara operativsystemet på datorn (Windows, Linux, MacOS, Android), officeprogramvaran (LibreOffice, Microsoft Office), tillverkaren av headset, leverantören av Internetförbindelsen, typ av hårdvara som används i organisationens datornätverk (switchar, brandväggar, accesspunkter), osv.

Tyvärr hamnar kunden allt som oftast i kläm när leverantörer börjar peka på andra leverantörer som en “möjlig felkälla”. Jag tror att en stor anledning till detta är att system- och lösningsleverantörer sitter och utvecklar i en skyddad miljö eller “skyddad verkstad” som det så fint heter.

Mitt råd till alla organisationer som skall byta eller förändra sitt telefonisystem, oavsett plattform och leverantör:

  • anlita ett företag som kan ställa de rätta frågorna till leverantören och förklara svaren och deras konsekvenser för er organisation;
  • var beredd på att ni måste förändra sättet att arbeta på;
  • försök inte bygga om systemet till organisationens egna system, då tappar ni i princip alla fördelar med ett standardsystem;
  • välj inte ett system som begränsar integrationer med andra system eller specifika leverantörer, bejaka öppna standarder, det är betydligt bättre för framtida förändringar och organisationens utveckling
  • dokumentera allt som görs och sägs mellan er och leverantören, innan, under och efter implementation.

Lycka till!

Var är den oberoende och kompetenta myndigheten för IT?

Man kanske skall vara öppen med faktum att 2017 förmodligen INTE är det år som går till historien då flest snedtramp gjorts vad gäller IT och IT-driften hos myndigheter, riksdagen, osv. Snarare råkar vi, av “ren tur”, ha kommit på att detta skett och fortsätter att ske, med makthavarnas vetskap. Fortsätter det så här, så kanske vi skulle lägga upp samhällskritisk och i många fall hemlig information på en öppen server så att Google kan indexera det (göra det sökbart). Då riskerar vi i alla fall inte att tappa bort informationen och samtidigt sparar vi enorma mängder pengar. Win Win!

Men en större fråga tycker jag är: Varför har vi inte en oberoende myndighet som ansvarar för drift av och beslut gällande driften av IT-system inom offentlig förvaltning? Hur kommer det sig att vi 2017 får reda på att till och med regeringskansliet inte har någon som helst aning om vad de sysslar med och vilka risker man tar när man väljer att “lägga ut driften” eller “ta in kompetens”?

Även om jag principiellt inte är för att ytterligare komplicera och försvåra den redan ganska röriga byråkratin vi har, så känns det som att detta faktiskt skulle kunna vara motiverat. Det är för många dinosaurier, det är för många politiska tillsättningar och det saknas definitivt kunskaper.

Det kanske är dags att tillsätta en grupp människor och bilda en ny myndighet, där de tre yttersta kraven är IT-kunskap, sekretess och oberoende. När vi i de flesta andra situationer strävar efter att ha bäst kompetens på rätt plats, varför är det inte så när det gäller IT inom offentlig förvaltning?

Godtrohet är inte en giltig ursäkt för inkompetens.

Kanske skulle detta falla under MSBs ansvar, kanske inte.

Jag har sagt det tidigare och säger det igen: Vi har bara sett toppen på ett enormt isberg.

#svpol #fail #it #sakerhet

Are you missing some keys on your Lenovo Laptop keyboard?

As much as I hate editing Excel / LibreOffice Calc sheets, it is sometimes necessary. While doing so recently, I noticed I was all of a sudden scrolling the entire document with the arrow keys, as opposed to switching cells. I found out that this was apparently expected behavior, when ScrLK (or “ScrollLock”) is active. Only, I was using one of my Lenovo laptops at the time. It doesn’t have a ScrLK key.

So, after some searching I found out that the answer is, as it often is, the Fn key. The following keyboard combinations work on many Lenovo laptops:

Break (FN + B)
SysRq (FN + S)
ScrLK (FN + K)
Pause (FN + P)