• Tech

    Can’t install imagemagick for PHP with pecl?

    If you’re running WordPress on your own Mac OS X Server and have installed an updated version of PHP using Homebrew, you may have a directory mismatch that will prevent pecl from successfully installing imagemagick.

    You will need to manually create the directory where imagemagick.so will be installed.

    mkdir /usr/local/Cellar/php/7.4.7/pecl/yyyymmdd

    where yyyymmdd is the version of imagemagick… which unfortunately you may not know until you run the install script and let it tell you which directory is missing.

    $ brew install pkg-config imagemagick
    $ pecl install imagick

    You will get an Error message with the missing directory. Cut-and-paste into the mkdir argument. Once that directory is created, run pecl again.

    $ pecl install imagick
    [. . .]
    install ok: channel://pecl.php.net/imagick-3.4.4
    Extension imagick enabled in php.ini

    Check that imagick is installed:

    $ php -m | grep -i magic

    You’ll get


    Now restart the web server

    sudo serveradmin stop web
    sudo serveradmin start web

    Now go look in your phpinfo.php (that you as a respectable admin have already created in a unlinked directory on your web server). A whole section for ImageMagick (imagick) should have been added. WordPress’s self-check should also show that it passed.

  • Automotive

    2019~ Porsche Cayenne Turbo Oil Change

    This tutorial applies to Porsche Cayenne Turbo models 9Y0/9YA/9YB/9Y3.

    What’s so special about the Turbo?

    • There are two extra steps to the process compared to the base model Cayenne.
    • Takes an extra quart of oil compared to base model.
    • The oil drain plug is under the first under carriage plate.
    • The oil filter housing is under the front torsion bar.
    • The drain plug and filters have been standardized with the Panamera.

    Time and Difficulty

    Easy but dirty

    • Beginner: About 8 hrs
    • DIY-er: About 4 hrs
    • Pro: About 1.5 hours

    Parts and Tools

    • New oil filter and O-ring (9A719840500)
      • Purflux is a Porsche OEM supplier
    • New oil (8+1 qt of C40 approved 0W-40 oil†; Mobil ESP X3 0W-40††)
    • 32mm filter cap socket
    • T25 socket/bit for under carriage plate
    • T30 socket/bit for torsion bar
    • T45 socket/bit for under carriage plate and drain plug
    • 7mm wrench (ratcheting box wrench recommended)
    • Torque wrench for 25 Nm (19ft-lbs) and 50 Nm (37ft-lbs)
    • Jack or ramps
    • Jackstands
    • Wheel chocks
    • Drain pan
    • Plastic bag

    C40 has superseded A40 approval without backwards compatibility in mid-2018. C40 approved engine oil is not widely available in the US as of 2019-2020.
    †† Mobil ESP X3 is labeled ESP in the North America. It is meant for vehicles equipped with diesel GDI (Gasoline Direct Injection) to help with Gasoline Particulates Filtering, but North American Cayennes are not equipped with diesel – as of yet. Nevertheless, it will not harm non-diesel engines. It is most likely an attempt by VW-Audi-Porsche to standardize on an engine oil for newer vehicles.

    Optional parts and tools

    • New drain plug (M14 x 1.5mm : PAF-911-679)
      • Rein Automotive is a Porsche OEM supplier
    • New drain plug crush washer (14 x 20 x 1.5mm : N-013-849-8)
      • Fischer & Plath
    • Movers blanket or Floor creeper
    • Disposable gloves
    • Oil absorbing rags
    • Parts cleaner spray
    • Funnel

    Torque specs

    • Oil filter cap to housing 25Nm (19ft-lbs*)
    • Oil drain plug to oil pan 50Nm (37ft-lbs*) with new crush washer. 30Nm (22ft-lbs) with old crush washer.

    * There is a +/- 2Nm margin in the torque specs, therefore it is safe to say 19ft-lbs and 37ft-lbs are acceptable SAE values respectively.


    1. Warm up car for 10~15 min
    2. Engage lift mode through PCM. Turn off car.
    3. Lift car, engage parking break ((P)), chock wheels, apply jack stands
    4. Remove under carriage covers
    5. Locate the oil drain plug, place drain pan underneath. Remove drain plug and drain old oil into pan.
    Location of drain plug
    1. Pop hood
    2. Remove plastic engine cover by disengaging two metal clips at 4 & 8 o’clock. Pop cover off from 8 ball joint clips.
    3. Disengage engine oil cap housing by pressing on the clip and lifting up.
    4. Remove intake filter with housing:
      1. Loosen air intake manifold ducts by pulling towards nose of car.
      2. Loosen 7mm clamps on both turbo elbows.
      3. Pull filter housing up from two rubber grommets while pulling off the turbo elbows. The back clips are hinged. Lift up and towards front of car to remove completely.
    Air intake
    7mm clamps
    Rubber grommet
    1. Loosen oil cap to create positive air pressure, you may leave the cap loosely on top to prevent dust from getting sucked in.
    2. Remove engine side panels by disengaging 3 thin pins and 2 fat pins on each side.
    Don’t break those pins!
    1. Remove front torsion bar by removing six (6) T30 screws. Tilt bar up from the back to lift out.
    Torsion bar
    Voila! The filter cap is revealed!!
    1. When the oil stops draining from the bottom, replace oil filter
      1. Move the two turbo lines straddling the filter housing to either side.
      2. Loosen and remove oil filter cap using 32mm filter wrench
      3. Have a plastic bag ready as you pull up and remove the oil filter
      4. Inspect the area for debris. Insert new filter.
      5. Clean filter cap and replace O-ring. Lubricate the new ring with a dab of new oil.
      6. Re-install filter cap, do not cross thread. Torque to 25Nm (18ft-lbs).
    2. Install new crush washer and drain plug. Torque to 50Nm (37ft-lbs). *If re-installing the old washer that is already crushed, torque to 30Nm (22ft-lbs).
    3. Remove oil cap, add 8qt oil. Close cap. Inspect for leaks.
    4. Inspect and clean drain plug area. Re-install undercarriage plate.
    5. Re-install front torsion bar.
    6. Re-install air filter housing, air intake manifold, and turbo elbows –tighten clamps.
    7. Re-attach engine oil spout and re-install all engine covers.
    8. Remove wheel chock and jack stands. Disengage parking break, return car to flat ground
    9. Disengage lift mode through PCM
    10. Turn on car and keep it running for 10~15 min, check oil level through right cluster
    11. Top off oil if necessary. If not now, probably a few days later

    You will definitely need to add some oil later. Usually, there is burn off of the new oil and about a pint gets sucked into the new filter. You will also want to save a quart bottle of oil as the car will ask for a top off in about 5,000 miles.

  • OS X Server Globe

    [OS X Server 5.x] httpd.conf location

    The httpd.conf file controlled by the Server.app is stored at


    If you happen to update PHP or other Apache modules through non-Apple methods (e.g. homebrew), then this is where you add your LoadModule and FilesMatch arguments.

    You MUST restart the web server through the Server.app for changes to load. apachectl graceful will not load the changes in httpd_server_app.conf.

    #This article is in response to “Update PHP on OS X Server 5.x”.

  • Lets Encrypt & Certbot

    Certbot, HTTPS, and Timeout Error

    If you use Let’s Encrypt as your SSL certificate authority, it is paramount that you implement an automatic certificate renewal procedure.

    Very helpful tutorial from Mac Strategy – How To Setup Let’s Encrypt For OS X / macOS + Server 5.x

    When setting up or renewing your SSL certificates, you may encounter a problem with certbot giving you the following error:

    Timeout, https://www.example.com (http-01):
    urn:acme:error:connection :: The server could not connect to
    the client to verify the domain 

    This may be happening if you ONLY have the HTTPS version of your website configured OR if you use http::REDIRECT to redirect to HTTPS without letting the GET request connect to a HTTP version of your site.

    certbot, as default, can only validate your website via HTTP on port 80. The easiest solution would be to provide an HTTP version of your website. This may be less than ideal for many setups where port 80 is inundated with DDoS attacks – so it seems.

    In reality, if port 80 is served by the same software that serves port 443, having port 80 open does not increase the amount of risk. Rather, it is a reminder that one should not rely on the illusion that HTTPS alone will prevent a hack. Your website design should be more resilient in that it would protect against ALL web based attacks.

    A message from Let’s Encrypt regarding Port 80: Best Practice – Keep Port 80 Open

    So open up port 80, setup your webserver to answer to HTTP requenst, and renew your Let’s Encrypt SSL certificates using certbot. And go add some security features to your website while your at it.

    For WordPress sites like this, you can use the WP Force SSL plugin to reroute all HTTP request to HTTPS via script. That means, any non-Wordpress request like certbot’s will be processed via HTTP.

  • DirecTV

    [iOS] Cannot login to DirecTV as TV Provider

    If you’re a DirecTV subscriber and trying to watch TV shows on iOS/iPad OS/TV OS, you may have encountered an error when trying to log into DirecTV. Individual channel apps may ask you if you want to Link your TV Provider to the app and if you select “Yes”, you will be presented with a login screen for DirecTV.

    Unfortunately, the API version of the login screen has some kind of error (probably an encryption mismatch) and will give you an error saying

    That User ID doesn't seem to work here. Please sign in with a different ID. Care Code 205.4

    You should FIRST check that you have the correct user ID and password by logging into your account page at DirecTV.com. If that works, then the problem is with the interface between your iOS device’s API and DirecTV’s auth server. You can circumvent the API by logging in via web…

    You have to select a TV Provider that is not DirecTV and NOT log in. I chose AT&T U-verse then backed out of the setting screen. This will leave your TV Provider setting blank. Then when an individual channel app asks for your TV Provider info, you can select DirecTV and you will be presented with a clunky web-base login page instead of the sleek API screen.