オイゲンが言ったことは本当です。これは、ベースパスが含まれているスクリプトと同じではないためです。
また、私のテストから(同様の問題に遭遇したため)、ファイルを含めるときにphp include()が別の一時的なinclude_pathを保存するようです。これがajax_vote.phpにconfig_mysql.phpを含めることができる理由です。自分自身を納得させるために、config_mysql.php を ajax フォルダーに移動してみてください。これは同じように機能し、config.php はそれを含めることができます (ただし、index.php ではなく、ajax_vote.php を実行する場合のみ!)。この場合、'/ajax/' と '/' の 2 つのインクルード パスがあります。
ただし、パス (インクルードするファイル名だけでなく、文字列でフォルダーも指定する) を使用する場合、インクルード パスは実行中のスクリプトのみに基づきます (例: '/ajax/' のみ)。
次のようにして、この動作を修正できます。
include(dirname(__FILE__).'/language/english.php'); // don't forget the prepended '/'
あるいは単に:
include('/language/english.php'); // here again the prepended '/'
ただし、2 番目の方法が機能する理由をまだ完全には理解していないことを警告します。dirname() で最初の方法を使用する方が安全かもしれません。
/編集: include('/path/to/file') はおそらく Windows OS のバグであることがわかりました: Windows では dirname(__ FILE__ ) と同じですが、UNIX ではルート パスと同じです。したがって、 dirname(__ FILE__ ) は間違いなく信頼性が高くなります。