PHP-FPM “Access Denied” on .phtml Files

a problem which took about 1h of research..

Some Weeks ago, i switched most of the webserver setups from custom spawn-fcgi init scritps to php-fpm and everything seems to work fine until today. The php-version of GitHubButtons won’t work anymore – just a text-message appears: “Access Denied.” First of all i thougt it was a problem with lighttpd and the fastcgi.map-extensions directive, but the error message doesn’t seem to be served by lighttpd…and well…it was a php-fpm related issue, beacause php-fpm only processes .php files by default!

You will not find these directive in the official FPM Documentation on php.net – it’s missing including tons of other directives. To get an overview about all possible php-fpm config keys, you should take a look into to default php-fpm.conf file included into the php-sources (sapi/fpm/php-fpm.conf) – also attached to this post!

Important: This directive can’t be used in global context, it’s a pool based config key!

Examle Pool: php-fpm.conf#

[pool-testwww]
; Limits the extensions of the main script FPM will allow to parse. This can
; prevent configuration mistakes on the web server side. You should only limit
; FPM to .php extensions to prevent malicious users to use other extensions to
; exectute php code.
; Note: set an empty value to allow all extensions.
; Default Value: .php
; Recommended: .php .phtml
security.limit_extensions = .php .php3 .php4 .php5 .phtml

Add Links to WordPress Plugin Page (Metadata Row)

Additional News/Update or Settings Links

Sometime you want to add special links directly to the plugin-page. For example, you can enable an easy access to the plugin’s settings-page or to related docs/resources. All the magic is done within the plugin_row_meta hook.

It’s important to check which plugin is currently processed (there are no plugin/namespace specific hooks). Therefore you have to check which plugin-(main)file is selected: if ($file == 'enlighter/Enlighter.php'){

Additional links can be added to the $links array including I18n support.

Appearance#

additional_plugin_links

How it’s done#

// add links
add_filter('plugin_row_meta', 'addPluginPageLinks', 10, 2);

// links on the plugin page
function addPluginPageLinks($links, $file){
  // current plugin ?
  if ($file == 'enlighter/Enlighter.php'){
    $links[] = '<a href="'.admin_url('options-general.php?page='.plugin_basename(__FILE__)).'">'.__('Settings', 'enlighter').'</a>';
    $links[] = '<a href="https://twitter.com/andidittrich">'.__('News & Updates', 'enlighter').'</a>';
  }
  
  return $links;
}

Cryptex 4.0 with Retina/HighDPI support

behind the scene – high-resolution, css based images using media queries

The Story# No scrapers. No harvesters. No spambots. That’s our goal. A several years ago, i’ve released the first version of the Crypex Plugin to protect E-Mail-Addresses on WordPress based websites. It works great but currently many mobile devices like tablets, smartphones are using high-dpi displays which results in blurred E-Mail-Addresses. Therefore i’ve create a […]

GitHub “Star”-gazer Buttons with MooTools/jQuery/PHP

No iFrames required – just pure javascript/php

Show your Love to GitHub# GitHubButtons is a fork of the famous github-buttons from @mdo using the original styles with a complete new javascript part based on MooTools/jQuery without the need of iframes. It’s targeted on MooTools/jQuery/PHP-Users which are already using various stuff on their pages – all other users should use the original iframe […]

Howto: Content Navigation/Menu with WordPress

automatically generated navigation including anchors

State of the Art# There are a several ways how to deal with large content. The most common used method is to split the content in multiple pages, but this completely destroys the usability on tablets, big screens or other mobile devices and frustate your users. Furthermore, each sub-page causes an additional http-request and extra […]

Fixed Scroll Navigation with MooTools

sticky navigation bar that remains fixed on scrolling

The Goal# Currently a very popular and often used technique wich provides a great usability. There are a several jQuery plugins and code-snippets available which are providing this feature but they are sometimes very complex and didn’t work with MooTools based websites. This tutorial shows you how to create a sticky navigation bar that remains […]

Enlighter WordPress Plugin v2.0 release

EnlighterJS Advanced Javascript based post syntax highlighting

Version 2.0 Released# I am proudly to announce the immediate availbility of Enlighter v2.0. Including EnlighterJS 2.1 with support for Inline-Syntax-Highlighting!  About the Plugin# Enlighter is a free, easy-to-use, syntax highlighting tool for WordPress. It’s build in PHP and uses the MooTools(Javascript) based EnlighterJS to provide a beautiful code-appearance. Using it can be as simple […]

LightUp – PHP Markdown Renderer released

Markdown Parser inspired by GitHub flavored markdown (GFM)

Features# Written in PHP (Version > 5.3 required) Ultra small footprint – only 3 files required, each of them with less than 450 lines of well documented code (linewise comments) Extensible – you need some special features ? Full support for GitHub flavored markdown (excluding tables) Supports various syntax highlighting variants (use the highlighter of […]

Zanmantou3 Development Discontinued

zanmantou web av player, zanmantou wordpress plugin, zanmantou jsapi

Development Discontinued# I am very sorry to announce, that the development of Zanmantou3, including the WordPress Plugin is discontinued. But in case of the upcomming HTML5 standard and the obvious fact of discontinuing Flash on Linux and mobile devices on the part of Adobe there is no right to exist or better to say necessity […]

Easily Update Owncloud with PHP Scripting

update your owncloud installation with only one command

Owncloud# You like owncloud ? But updating realy sucks..there ist no automatic update function and typing 10 lines into your shell takes to much time. So here is the simple. 1 command solution! Usage# Just execute the following command via ssh (you get the packeage url directly from owncloud.com): Syntax: owncloud_update.php <package_url.tar.bz2> Example:php owncloud_update.php http://download.owncloud.org/releases/owncloud-4.0.4.tar.bz2 […]