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!

Svenska lärare för dåliga på programmering

Dagens “roligaste” rubrik blev nyheternas rapportering om att lärare i Sverige saknar tillräckliga kunskaper i programmering för att lära ut – wait for it – programmering. Vad som gör “nyheten” än mer fascinerande är att Regeringen skyller ifrån sig och pekar på “den verkliga huvudmannen” (dvs Kommunerna) som den största anledningen till att problemet uppstått.

Här är ett litet tips till Regeringen: Programmeringskunskaper hos svenska elever har varit en bristvara sedan tidigt 1980-tal. Det är fanimig dags att ni vaknar!

Det skall inte ta 40 år att lägga fram en plan, för någonting. Det skall inte ta 40 år innan man kommer på att “IT, det kanske är en grej att satsa på”. Det skall inte ta 40 år innan man tillsätter en NATIONELL HANDLINGSPLAN för hur ALLA barn skall lära sig programmering och ser till att den följs (och att kommuner och skolor har resurser).

Och det är inget annat än dumheter att skylla ifrån sig, 2018, när man som Utbildningsminister försöker hitta anledningen till att det efter 40 år FORTFARANDE är ett problem.

Dagens tips: Oavsett vilken politisk färg du har, sluta slösa bort allas tid med reaktiv politik, det börjar bli ett ganska uttjatat koncept att höra er säga vad ni skall göra (efter några rundor med nya utredningar), lägg istället resurser och energi på proaktiv politik. LED för bövelen landet, sitt inte i baksätet och skyll ifrån er.

Varför media borde bry sig om “milleniumbarnen” aka Y2K-Valet

2018 skall “milleniumbarnen” rösta i Y2K-valet, med andra ord för första gången. Det är inget ovanligt och inget nytt att vi har en ny årskull som skall tycka till. Vad som är realtivt nytt är medias generella kräftgång till sensationsjournalistik. Medias kritiska och oberoende granskning och rapportering, oavsett ämne, är naturligtvis alltid viktig; de senaste åren har leveransen av sådan granskning tyvärr varit av den motsatta sorten. Många journalister, tidningar och TV har en helt egen agenda och ställer sällan kritiska frågor.

Snälla, när politiker börjar svamla om vad de SKALL göra, avbryt dem på en gång. Ta ett andetag och fråga “Jo, vi har hört allt det där, men HUR skall ni göra det?” och ge er inte förrän de antingen lägger ned eller faktiskt (!) svarar på frågan.

Alla är experter i sin egen soffa, alla vill ändra på allt som är dåligt, få verkar ha en plan för exakt hur det skall gå till.

I ett samhälle som alltmer förlitar sig på alternativa sanningar (aka “sociala medier”) behövs naken och rå journalistik mer än någonsin, hur obekväm den än må vara. “Milleniumbarnen” är uppväxta med “fake news” och “fake media”, där har ni en grupp som verkligen behöver äkta journalister.

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 🙂

Goodbye K2 Spyne 130, hello Lange SX 130

They were fantastic, they were great, they were fun, and I’d be happy to check them out again some day. In a somewhat wider model 🙂 The K2 Spyne 130 alpine ski boots are definitely some of the better ones I’ve had the pleasure of using. I know there’s a HV model since 2015, but it was hard to find in my part of the world at the time I had to get a new pair of boots. But, if you come across a pair of K2 Spyne and they fit … give them a run! I’ll be trying out the Lange SX 130 for the time being.