File_Get_Contents

I have some code that takes a URL – gets its content using file_get_contents then use preg_match_all to find other links (URLs) then tries to loop through those links and get their content via the file_get_contents function.
However, the first file_get_contents works like it should but when I try to use it again for the other links – it does not work – it seems to get confused.  It might get the contents one or two other links then just goes crazy and seems to get into an infinite loop on the same link.
I looked up some information regarding this problem and could not find anything that will solve the problem.
What am I missing?  Do I need to close the first file_get_contents and if so, how?  Is their a function that closes it or do I just rest the string variable to empty?  Or, can you not do this more than one time?

Got it fixed – a minor typo on my part.  But, in researching possible errors, I did learn about an alternative to file_get_contents() using cUrl and found that to be very interesting.  I am now trying to replace my use of file_get_contents() with cUrl code.

Similar Messages

  • PHP FastCGI on SJSWS 6.1 SP8 prevents file_get_contents() to work

    Hi,
    sorry to bother you again, but we discovered another problem with the FastCGI implementation and I just want to verify if someone else can reproduce that. A site is using file_get_contents() to gather information from the same site, but a different PHP file, and display it on the screen.
    I tried both PHP 4.4.7 and 5.2.4 and the problem is always present.
    file a.php contains:
    <?php
    $url="http://servername/b.php";
    $file = file_get_contents($url);
    echo $file;
    ?>file b.php contains:
    <?
    print "Hello World!";
    ?>Expected result is to see "Hello World!" when browsing http://servername/a.php.
    Actual result is: "Warning: file_get_contents(http://servername/b.php) [function.file-get-contents]: failed to open stream: HTTP request failed! in /www/servername/a.php on line 3".
    It works correctly with the browser if I point "a.php" to a "b.php" located on another website, configured with FastCGI or NSAPI. It also works correctly on the PHP command line if the "b.php" is located on the same website or another website.
    With NSAPI PHP, it works perfectly from the browser or the command line, to the same website or another one.
    I'll post that bug to the PHP site, but I would like to know if I'm not the only one with that bug.

    I can't speak to WS6.1 (I'm no longer running it), but WS7.0u1 with PHP 5.2.5-dev (built from the tip to work around another PHP bug) I see "Hello world!" after running the test.
    PHP is compiled with:
    './configure' '--enable-track-vars' '--enable-force-cgi-redirect' '--with-gettext' '--enable-fastcgi' '--with-zlib' '--with-jpeg-dir' '--with-gd' '--with-mysql=/usr/local/mysql/include/'My php.rc looks like:
    session.bug_compat_42 = Off
    session.bug_compat_warn = Off
    magic_quotes_gpc = Off
    memory_limit = 128M
    post_max_size = 128M
    upload_max_filesize = 128M
    fastcgi.logging = true
    log_errors = on
    error_log = /export/WS7/https-www/logs/php_errors
    error_reporting = E_ALL
    ; Maybe this can keep PHP from eating all my resources
    max_execution_time = 30
    set_time_limit = 300
    include_path = /usr/local/lib/php
    extension_dir=/export/WS7/third-party/php/

  • PHP's file_get_contents

    Hi
    Im trying to emulate PHP's file_get_contents(www.php.net/file_get_contents ) using Java.
    import java.io.*;
    import java.net.*;
    public class test23
            public static void main(String[] args) throws Exception
                    String s = (String)file_get_contents("http://google.com/");
                    System.out.println(s);
            public static Object file_get_contents(String strURL)
                    StringBuffer content = new StringBuffer();
                    byte[] b = new byte[10];
                    try
                            URL oURL = new URL(strURL);
                            URLConnection oURLC = oURL.openConnection();
                            oURLC.connect();
                            InputStream in = oURLC.getInputStream();
                            while (in.read(b) != -1)
                                    content.append(b);
                    catch (MalformedURLException e)
                            return false;
                    catch (IOException e)
                            return false;
                    return content.toString();
    }readLine() of BufferedReader can read line by line but I want it read either byte-by-bye or in chunks of bytes. How do I do that ? Here obviously the ascii value is getting appended.
    Is there an easier way ?
    Message was edited by:
    anjanesh
    null
    Message was edited by:
    anjanesh
    null
    null

    The return type of URLConnection.getInputStream() is InputStream, so I thought:
    InputStream in = oURLC.getInputStream();
    import java.io.*;
    import java.net.*;
    public class test23
            public static void main(String[] args) throws Exception
                    String s = (String)file_get_contents("http://google.com/");
                    System.out.println(s);
            public static Object file_get_contents(String strURL)
                    StringBuffer content = new StringBuffer();
                    char[] c = new char[100];
                    try
                            URL oURL = new URL(strURL);
                            URLConnection oURLC = oURL.openConnection();
                            oURLC.connect();
                            BufferedReader in = new BufferedReader(new InputStreamReader(oURLC.getInputStream()));
                            while (in.read(c) != -1)
                                    content.append(c);
                             in.close();
                    catch (MalformedURLException e)
                            return false;
                    catch (IOException e)
                            return false;
                    return content.toString();
    }Anyway I've changed it to BufferedReader but Im guessing the content.append(c); isnt still right as some lines have a few extra chars.
    The reason I dont want to use readLine() is that readLine() assumes you're reading a text file. file_get_contents shoudnt wont return just html links' content but even images, pdfs etc etc. Basically file_get_contents will return content of any given link.

  • File_get_contents ($file) works -- file_get_contents ($url) returns false

    Strange problem I'm having on Mac OS X Server 10.6 running PHP 5.3. Any call of filegetcontents() on a local file works fine -- the file is read and returned. But any call of filegetcontents on a url -- any url, local or remote -- always returns false.
    var_dump (filegetcontents ('http://www.google.com/'));
    bool(false)
    I've checked php.ini, and the obvious seems okay:
    allowurlfopen => On => On
    Any ideas?
    ...Rene

    n0dix wrote:Check that the PHP setting allow_url_fopen is set to On. Use phpinfo() to check all settings. And your firewall
    allow_url_fopen is set to on.  I verified via phpinfo(), but I didn't really have to because some pages work and some don't.  The fact that some pages work would also tend to rule out the firewall concern.

  • A little help with rutorrent

    Hi comrades,
    I use rtorrent in terminal without problems but recently I got interested in rutorrent.
    I've been following the rtorrent wiki and rutorrent wiki to get to this point.
    First of all rtorrent is working fine in terminal, but with rutorrent I only get to this far: http://i637.photobucket.com/albums/uu93 … 1403737709
    As you can see in the upeer right of the image it's trying to connect and in the log section is throwing me this:
    [25.06.2014 18:37:22] WebUI started.
    [25.06.2014 18:37:23] Bad response from server: (200 [parsererror,getplugins]) <?php require_once( "util.php" ); require_once( "settings.php" ); function pluginsSort($a, $b) { $lvl1 = (float) $a["info"]["plugin.runlevel"]; $lvl2 = (float) $b["info"]["plugin.runlevel"]; if($lvl1>$lvl2) return(1); if($lvl1<$lvl2) return(-1); return( strcmp($a["name"],$b["name"]) ); } function getFlag($permissions,$pname,$fname) { $ret = true; if(array_key_exists($pname,$permissions) && array_key_exists($fname,$permissions[$pname])) $ret = $permissions[$pname][$fname]; else if(array_key_exists("default",$permissions) && array_key_exists($fname,$permissions["default"])) $ret = $permissions["default"][$fname]; return($ret); } function getPluginInfo( $name, $permissions ) { $info = array( 'rtorrent.need'=>1, 'rtorrent.remote'=>'ok', 'rtorrent.external.warning'=>array(), 'rtorrent.external.error'=>array(), 'rtorrent.script.error'=>array(), 'rtorrent.php.error'=>array(), 'rtorrent.version'=>0x802, 'rtorrent.version.readable'=>'0.8.2', 'plugin.may_be_shutdowned'=>1, 'plugin.may_be_launched'=>1, 'plugin.runlevel'=>10.0, 'plugin.description'=>'', 'plugin.author'=>'unknown', 'plugin.dependencies'=>array(), 'php.version'=>0x50000, 'php.version.readable'=>'5.0.0', 'php.extensions.warning'=>array(), 'php.extensions.error'=>array(), 'web.external.warning'=>array(), 'web.external.error'=>array(), 'plugin.help'=>'', ); $fname = "../plugins/".$name."/plugin.info"; if(is_readable($fname)) { $lines = file($fname); foreach($lines as $line) { $fields = explode(":",$line,2); if(count($fields)==2) { $value = addcslashes(trim($fields[1]),"\\\'\"\n\r\t"); $field = trim($fields[0]); switch($field) { case "plugin.help": case "plugin.author": case "plugin.description": case "rtorrent.remote": { $info[$field] = $value; break; } case "plugin.may_be_shutdowned": case "plugin.may_be_launched": case "rtorrent.need": { $info[$field] = intval($value); break; } case "plugin.version": case "plugin.runlevel": { $info[$field] = floatval($value); break; } case "rtorrent.version": case "php.version": { $version = explode('.', $value); $info[$field] = (intval($version[0])<<16) + (intval($version[1])<<8) + intval($version[2]); $info[$field.'.readable'] = $value; break; } case "plugin.dependencies": case "rtorrent.external.warning": case "rtorrent.external.error": case "rtorrent.script.error": case "rtorrent.php.error": case "web.external.warning": case "web.external.error": case "php.extensions.warning": case "php.extensions.error": { $info[$field] = explode(',', $value); break; } // for compatibility case "author": case "description": { $info['plugin.'.$field] = $value; break; } case "remote": { $info['rtorrent.remote'] = $value; break; } case "need_rtorrent": { $info['rtorrent.need'] = intval($value); break; } case "version": case "runlevel": { $info['plugin.'.$field] = floatval($value); break; } } } } $perms = 0; if($permissions!==false) { if(!getFlag($permissions,$name,"enabled")) return(false); $flags = array( "canChangeToolbar" => 0x0001, "canChangeMenu" => 0x0002, "canChangeOptions" => 0x0004, "canChangeTabs" => 0x0008, "canChangeColumns" => 0x0010, "canChangeStatusBar" => 0x0020, "canChangeCategory" => 0x0040, "canBeShutdowned" => 0x0080, /* "canBeLaunched" => 0x0100, */ ); foreach($flags as $flagName=>$flagVal) if(!getFlag($permissions,$name,$flagName)) $perms|=$flagVal; if(!$info["plugin.may_be_shutdowned"]) $perms|=$flags["canBeShutdowned"]; } $info["perms"] = $perms; } return(array_key_exists("plugin.version",$info) ? $info : false); } function findRemoteEXE( $exe, $err, &$remoteRequests ) { $st = getSettingsPath().'/'.rand(); if(!array_key_exists($exe,$remoteRequests)) { $path=realpath(dirname('.')); global $pathToExternals; $add = ''; if(isset($pathToExternals[$exe]) && !empty($pathToExternals[$exe])) $add = " ".escapeshellarg($pathToExternals[$exe]); $req = new rXMLRPCRequest(new rXMLRPCCommand("execute", array( "sh", "-c", escapeshellarg(addslash($path)."test.sh")." ".$exe." ".escapeshellarg($st).$add))); $req->run(); $remoteRequests[$exe] = array( "path"=>$st, "err"=>array() ); } $remoteRequests[$exe]["err"][] = $err; } function testRemoteRequests($remoteRequests) { $ret = ""; foreach($remoteRequests as $exe=>$info) { $file = $info["path"].$exe.".found"; if(!is_file($file)) { foreach($info["err"] as $err) $ret.=$err; } else @unlink($file); } return($ret); } $jResult = "theWebUI.deltaTime = 0;\n"; $access = getConfFile('access.ini'); if(!$access) $access = "../conf/access.ini"; $permissions = parse_ini_file($access); $settingsFlags = array( "showDownloadsPage" => 0x0001, "showConnectionPage" => 0x0002, "showBittorentPage" => 0x0004, "showAdvancedPage" => 0x0008, "showPluginsTab" => 0x0010, "canChangeULRate" => 0x0020, "canChangeDLRate" => 0x0040, "canChangeTorrentProperties" => 0x0080, ); $perms = 0; foreach($settingsFlags as $flagName=>$flagVal) if(array_key_exists($flagName,$permissions) && $permissions[$flagName]) $perms|=$flagVal; $jResult .= "theWebUI.showFlags = ".$perms.";\n"; $jResult .= "theURLs.XMLRPCMountPoint = '".$XMLRPCMountPoint."';\n"; $jResult.="theWebUI.systemInfo = {};\ntheWebUI.systemInfo.php = { canHandleBigFiles : ".((PHP_INT_SIZE<=4) ? "false" : "true")." };\n"; if($handle = opendir('../plugins')) { ignore_user_abort(true); set_time_limit(0); makeDirectory(getTempDirectory()); if(!@file_exists($tempDirectory.'/.') || !is_readable($tempDirectory) || !is_writable($tempDirectory)) $jResult.="noty(theUILang.badTempPath+' (".$tempDirectory.")','error');"; if(!function_exists('preg_match_all')) { $jResult.="noty(theUILang.PCRENotFound,'error');"; $jResult.="theWebUI.systemInfo.rTorrent = { started: false, iVersion : 0, version : '?', libVersion : '?' };\n"; } else { $remoteRequests = array(); $theSettings = rTorrentSettings::get(true); if(!$theSettings->linkExist) { $jResult.="noty(theUILang.badLinkTorTorrent,'error');"; $jResult.="theWebUI.systemInfo.rTorrent = { started: false, iVersion : 0, version : '?', libVersion : '?', apiVersion : 0 };\n"; } else { if($theSettings->idNotFound) $jResult.="noty(theUILang.idNotFound,'error');"; $jResult.="theWebUI.systemInfo.rTorrent = { started: true, iVersion : ".$theSettings->iVersion.", version : '". $theSettings->version."', libVersion : '".$theSettings->libVersion."', apiVersion : ".$theSettings->apiVersion." };\n"; if($theSettings->mostOfMethodsRenamed) $jResult.="theWebUI.systemInfo.rTorrent.newMethodsSet = true;\n"; if($do_diagnostic) { $up = getUploadsPath(); $st = getSettingsPath(); @chmod($up,$profileMask); @chmod($st,$profileMask); @chmod('./test.sh',$profileMask & 0755); if(PHP_USE_GZIP && (findEXE('gzip')===false)) { @define('PHP_USE_GZIP', false); $jResult.="noty(theUILang.gzipNotFound,'error');"; } if(PHP_INT_SIZE<=4) { if(findEXE('stat')===false) $jResult.="noty(theUILang.statNotFoundW,'error');"; findRemoteEXE('stat',"noty(theUILang.statNotFound,'error');",$remoteRequests); } if(!@file_exists($up.'/.') || !is_readable($up) || !is_writable($up)) $jResult.="noty(theUILang.badUploadsPath+' (".$up.")','error');"; if(!@file_exists($st.'/.') || !is_readable($st) || !is_writable($st)) $jResult.="noty(theUILang.badSettingsPath+' (".$st.")','error');"; if(isLocalMode() && !$theSettings->idNotFound) { if($theSettings->uid<0) $jResult.="noty(theUILang.cantObtainUser,'error');"; else { if(!isUserHavePermission($theSettings->uid,$theSettings->gid,$tempDirectory,0x0007)) $jResult.="noty(theUILang.badTempPath2+' (".$tempDirectory.")','error');"; if(!isUserHavePermission($theSettings->uid,$theSettings->gid,$up,0x0007)) $jResult.="noty(theUILang.badUploadsPath2+' (".$up.")','error');"; if(!isUserHavePermission($theSettings->uid,$theSettings->gid,$st,0x0007)) $jResult.="noty(theUILang.badSettingsPath2+' (".$st.")','error');"; if(!isUserHavePermission($theSettings->uid,$theSettings->gid,'./test.sh',0x0005)) $jResult.="noty(theUILang.badTestPath+' (".realpath('./test.sh').")','error');"; } } if($theSettings->badXMLRPCVersion) $jResult.="noty(theUILang.badXMLRPCVersion,'error');"; } } $plg = getConfFile('plugins.ini'); if(!$plg) $plg = "../conf/plugins.ini"; $permissions = parse_ini_file($plg,true); $init = array(); $names = array(); $disabled = array(); $phpVersion = phpversion(); if( ($pos=strpos($phpVersion, '-'))!==false ) $phpVersion = substr($phpVersion,0,$pos); $phpIVersion = explode('.',$phpVersion); $phpIVersion = (intval($phpIVersion[0])<<16) + (intval($phpIVersion[1])<<8) + intval($phpIVersion[2]); $phpRequired = false; $userPermissions = array( "__hash__"=>"plugins.dat" ); $cache = new rCache(); $cache->get($userPermissions); $cantBeShutdowned = 0x0080; $canBeLaunched = 0x0100; $disabledByUser = 0x8000; $loadedExtensions = array_map("strtolower",get_loaded_extensions()); while(false !== ($file = readdir($handle))) { if($file != "." && $file != ".." && is_dir('../plugins/'.$file)) { if(!array_key_exists($file,$userPermissions)) $userPermissions[$file] = true; $info = getPluginInfo( $file, $permissions ); if($info) { if( $info["plugin.may_be_launched"] && getFlag($permissions,$file,"enabled")=="user-defined") { $info["perms"] |= $canBeLaunched; if(!$userPermissions[$file]) { $info["perms"] |= $disabledByUser; $disabled[$file] = $info; $info = false; } } else $info["perms"] |= $cantBeShutdowned; } if($info!==false) { if(!$theSettings->linkExist && $info["rtorrent.need"]) { $disabled[$file] = $info; continue; } if($info['php.version']>$phpIVersion) { $jResult.="noty('".$file.": '+theUILang.badPHPVersion+' '+'".$info['php.version.readable']."'+'.','error');"; $disabled[$file] = $info; continue; } $extError = false; foreach( $info['php.extensions.error'] as $extension ) if(!in_array( $extension, $loadedExtensions )) { $jResult.="noty('".$file.": '+theUILang.phpExtensionNotFoundError+' ('+'".$extension."'+').','error');"; $extError = true; } if($extError) { $disabled[$file] = $info; continue; } if(count($info['web.external.error']) || count($info['web.external.warning']) || count($info['rtorrent.external.error']) || count($info['rtorrent.external.warning'])) eval( getPluginConf( $file ) ); foreach( $info['web.external.error'] as $external ) { if(findEXE($external)==false) { $jResult.="noty('".$file.": '+theUILang.webExternalNotFoundError+' ('+'".$external."'+').','error');"; $extError = true; } else if($external=='php') $phpRequired = true; } if($extError) { $disabled[$file] = $info; continue; } if($theSettings->linkExist) { if($info['rtorrent.version']>$theSettings->iVersion) { $jResult.="noty('".$file.": '+theUILang.badrTorrentVersion+' '+'".$info['rtorrent.version.readable']."'+'.','error');"; $disabled[$file] = $info; continue; } foreach( $info['rtorrent.external.error'] as $external ) { findRemoteEXE($external,"noty('".$file.": '+theUILang.rTorrentExternalNotFoundError+' ('+'".$external."'+').','error'); thePlugins.get('".$file."').disable();",$remoteRequests); if($external=='php') $phpRequired = true; } foreach( $info['rtorrent.script.error'] as $external ) { $fname = $rootPath.'/plugins/'.$file.'/'.$external; @chmod($fname,$profileMask & 0755); if(!isUserHavePermission($theSettings->uid,$theSettings->gid,$fname,0x0005)) { $jResult.="noty('".$file.": '+theUILang.rTorrentBadScriptPath+' ('+'".$fname."'+').','error');"; $extError = true; } } if($extError) { $disabled[$file] = $info; continue; } foreach( $info['rtorrent.php.error'] as $external ) { $fname = $rootPath.'/plugins/'.$file.'/'.$external; @chmod($fname,$profileMask & 0644); if(!isUserHavePermission($theSettings->uid,$theSettings->gid,$fname,0x0004)) { $jResult.="noty('".$file.": '+theUILang.rTorrentBadPHPScriptPath+' ('+'".$fname."'+').','error');"; $extError = true; } } if($extError) { $disabled[$file] = $info; continue; } if(!isLocalMode()) { if($info["rtorrent.remote"]=="error") { $jResult.="noty('".$file.": '+theUILang.errMustBeInSomeHost,'error');"; $disabled[$file] = $info; continue; } if($do_diagnostic && ($info["rtorrent.remote"]=="warning")) $jResult.="noty('".$file.": '+theUILang.warnMustBeInSomeHost,'error');"; } } if($do_diagnostic) { if($theSettings->linkExist) foreach( $info['rtorrent.external.warning'] as $external ) findRemoteEXE($external,"noty('".$file.": '+theUILang.rTorrentExternalNotFoundWarning+' ('+'".$external."'+').','error');",$remoteRequests); foreach( $info['web.external.warning'] as $external ) if(findEXE($external)==false) $jResult.="noty('".$file.": '+theUILang.webExternalNotFoundWarning+' ('+'".$external."'+').','error');"; foreach( $info['php.extensions.warning'] as $extension ) if(!in_array( $extension, $loadedExtensions )) $jResult.="noty('".$file.": '+theUILang.phpExtensionNotFoundWarning+' ('+'".$extension."'+').','error');"; } $js = "../plugins/".$file."/init.js"; if(!is_readable($js)) $js = NULL; $php = "../plugins/".$file."/init.php"; if(!is_readable($php)) $php = NULL; $init[] = array( "js" => $js, "php" => $php, "info" => $info, "name" => $file ); $names[] = $file; } } } if($phpRequired) { $val = strtoupper(ini_get("register_argc_argv")); if( $val!=='' && $val!='ON' && $val!='1' && $val!='TRUE' ) $jResult.="noty(theUILang.phpParameterUnavailable,'error');"; } usort($init,"pluginsSort"); foreach($init as $plugin) { $jEnd = ''; $pInfo = $plugin["info"]; $deps = array_diff( $pInfo["plugin.dependencies"], $names ); if(count($deps)) { $jResult.="noty('".$plugin["name"].": '+theUILang.dependenceError+' ".implode(",",$deps)."','error');"; $disabled[$plugin["name"]] = $pInfo; continue; } $jResult.="(function () { var plugin = new rPlugin( '".$plugin["name"]."',".$pInfo["plugin.version"]. ",'".$pInfo["plugin.author"]."','".$pInfo["plugin.description"]."',".$pInfo["perms"].",'".$pInfo["plugin.help"]."' );\n"; if($plugin["php"]) require_once( $plugin["php"] ); else $theSettings->registerPlugin($plugin["name"],$pInfo["perms"]); if($plugin["js"]) { $js = file_get_contents($plugin["js"]); if($theSettings->isPluginRegistered($plugin["name"])) $jResult.=$js; else { if(strpos($js,"plugin.loadLang()")!==false) $jResult.="plugin.loadLang();"; } $jResult.="\n"; } $jResult.=$jEnd; $jResult.="\n})();"; } foreach($disabled as $name=>$pInfo) { $jResult.="(function () { var plugin = new rPlugin( '".$name."',".$pInfo["plugin.version"]. ",'".$pInfo["plugin.author"]."','".$pInfo["plugin.description"]."',".$pInfo["perms"].",'".$pInfo["plugin.help"]."' );\n"; $jResult.="plugin.disable(); "; if($pInfo["perms"] & $disabledByUser) $jResult.="plugin.unlaunch(); "; $jResult.="\n})();"; } $jResult.=testRemoteRequests($remoteRequests); $theSettings->store(); } closedir($handle); } cachedEcho($jResult,"application/javascript",true);
    [25.06.2014 18:37:23] Bad response from server: (200 [parsererror,getuisettings]) <?php require_once( 'util.php' ); $s = '{}'; $fname = getSettingsPath()."/uisettings.json"; $fo = fopen($fname, 'r'); if($fo!==false) { if(flock($fo, LOCK_SH)) { $s = @file_get_contents($fname); if($s==false) $s = '{}'; flock($fo, LOCK_UN); } fclose($fo); } cachedEcho($s,"application/json",true);
    For that log I believe I've a problem with permission, or rutorrent plugins.
    Here are my configuration files
    /etc/webapps/rutorrent/conf/config.php
    <?php
    // configuration parameters
    // for snoopy client
    @define('HTTP_USER_AGENT', 'Mozilla/5.0 (Windows NT 6.0; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0', true);
    @define('HTTP_TIME_OUT', 30, true); // in seconds
    @define('HTTP_USE_GZIP', true, true);
    $httpIP = null; // IP string. Or null for any.
    @define('RPC_TIME_OUT', 5, true); // in seconds
    @define('LOG_RPC_CALLS', false, true);
    @define('LOG_RPC_FAULTS', true, true);
    // for php
    @define('PHP_USE_GZIP', false, true);
    @define('PHP_GZIP_LEVEL', 2, true);
    $schedule_rand = 10; // rand for schedulers start, +0..X seconds
    $do_diagnostic = true;
    $log_file = '/tmp/errors.log'; // path to log file (comment or leave blank to disable logging)
    $saveUploadedTorrents = true; // Save uploaded torrents to profile/torrents directory or not
    $overwriteUploadedTorrents = false; // Overwrite existing uploaded torrents in profile/torrents directory or make unique name
    $topDirectory = '/'; // Upper available directory. Absolute path with trail slash.
    $forbidUserSettings = false;
    $scgi_port = 5000;
    $scgi_host = "127.0.0.1";
    // For web->rtorrent link through unix domain socket
    // (scgi_local in rtorrent conf file), change variables
    // above to something like this:
    // $scgi_port = 0;
    // $scgi_host = "unix:///tmp/rpc.socket";
    $XMLRPCMountPoint = "/RPC2"; // DO NOT DELETE THIS LINE!!! DO NOT COMMENT THIS LINE!!!
    $pathToExternals = array(
    "php" => '/usr/bin/php', // Something like /usr/bin/php. If empty, will be found in PATH.
    "curl" => '/usr/bin/curl', // Something like /usr/bin/curl. If empty, will be found in PATH.
    "gzip" => '/usr/bin/gzip', // Something like /usr/bin/gzip. If empty, will be found in PATH.
    "id" => '/usr/bin/id', // Something like /usr/bin/id. If empty, will be found in PATH.
    "stat" => '/usr/bin/stat', // Something like /usr/bin/stat. If empty, will be found in PATH.
    $localhosts = array( // list of local interfaces
    "127.0.0.1",
    "localhost",
    $profilePath = '../share'; // Path to user profiles
    $profileMask = 0777; // Mask for files and directory creation in user profiles.
    // Both Webserver and rtorrent users must have read-write access to it.
    // For example, if Webserver and rtorrent users are in the same group then the value may be 0770.
    $tempDirectory = null; // Temp directory. Absolute path with trail slash. If null, then autodetect will be used.
    ~/.rtorrent.rc
    scgi_port = localhost:5000
    directory = /home/milo/Downloads
    session = /home/milo/.rutorrent/.session
    schedule = watch_directory,5,5,load_start=/home/milo/Downloads/*.torrent
    schedule = low_diskspace,5,60,close_low_diskspace=100M
    port_range = 49152-50000
    check_hash = no
    encryption = allow_incoming,try_outgoing,enable_retry
    dht = auto
    dht_port = 6881
    peer_exchange = yes
    /etc/php/php.ini
    [PHP]
    ; About php.ini ;
    ; PHP's initialization file, generally called php.ini, is responsible for
    ; configuring many of the aspects of PHP's behavior.
    ; PHP attempts to find and load this configuration from a number of locations.
    ; The following is a summary of its search order:
    ; 1. SAPI module specific location.
    ; 2. The PHPRC environment variable. (As of PHP 5.2.0)
    ; 3. A number of predefined registry keys on Windows (As of PHP 5.2.0)
    ; 4. Current working directory (except CLI)
    ; 5. The web server's directory (for SAPI modules), or directory of PHP
    ; (otherwise in Windows)
    ; 6. The directory from the --with-config-file-path compile time option, or the
    ; Windows directory (C:\windows or C:\winnt)
    ; See the PHP docs for more specific information.
    ; http://php.net/configuration.file
    ; The syntax of the file is extremely simple. Whitespace and lines
    ; beginning with a semicolon are silently ignored (as you probably guessed).
    ; Section headers (e.g. [Foo]) are also silently ignored, even though
    ; they might mean something in the future.
    ; Directives following the section heading [PATH=/www/mysite] only
    ; apply to PHP files in the /www/mysite directory. Directives
    ; following the section heading [HOST=www.example.com] only apply to
    ; PHP files served from www.example.com. Directives set in these
    ; special sections cannot be overridden by user-defined INI files or
    ; at runtime. Currently, [PATH=] and [HOST=] sections only work under
    ; CGI/FastCGI.
    ; http://php.net/ini.sections
    ; Directives are specified using the following syntax:
    ; directive = value
    ; Directive names are *case sensitive* - foo=bar is different from FOO=bar.
    ; Directives are variables used to configure PHP or PHP extensions.
    ; There is no name validation. If PHP can't find an expected
    ; directive because it is not set or is mistyped, a default value will be used.
    ; The value can be a string, a number, a PHP constant (e.g. E_ALL or M_PI), one
    ; of the INI constants (On, Off, True, False, Yes, No and None) or an expression
    ; (e.g. E_ALL & ~E_NOTICE), a quoted string ("bar"), or a reference to a
    ; previously set variable or directive (e.g. ${foo})
    ; Expressions in the INI file are limited to bitwise operators and parentheses:
    ; | bitwise OR
    ; ^ bitwise XOR
    ; & bitwise AND
    ; ~ bitwise NOT
    ; ! boolean NOT
    ; Boolean flags can be turned on using the values 1, On, True or Yes.
    ; They can be turned off using the values 0, Off, False or No.
    ; An empty string can be denoted by simply not writing anything after the equal
    ; sign, or by using the None keyword:
    ; foo = ; sets foo to an empty string
    ; foo = None ; sets foo to an empty string
    ; foo = "None" ; sets foo to the string 'None'
    ; If you use constants in your value, and these constants belong to a
    ; dynamically loaded extension (either a PHP extension or a Zend extension),
    ; you may only use these constants *after* the line that loads the extension.
    ; About this file ;
    ; PHP comes packaged with two INI files. One that is recommended to be used
    ; in production environments and one that is recommended to be used in
    ; development environments.
    ; php.ini-production contains settings which hold security, performance and
    ; best practices at its core. But please be aware, these settings may break
    ; compatibility with older or less security conscience applications. We
    ; recommending using the production ini in production and testing environments.
    ; php.ini-development is very similar to its production variant, except it's
    ; much more verbose when it comes to errors. We recommending using the
    ; development version only in development environments as errors shown to
    ; application users can inadvertently leak otherwise secure information.
    ; This is php.ini-production INI file.
    ; Quick Reference ;
    ; The following are all the settings which are different in either the production
    ; or development versions of the INIs with respect to PHP's default behavior.
    ; Please see the actual settings later in the document for more details as to why
    ; we recommend these changes in PHP's behavior.
    ; display_errors
    ; Default Value: On
    ; Development Value: On
    ; Production Value: Off
    ; display_startup_errors
    ; Default Value: Off
    ; Development Value: On
    ; Production Value: Off
    ; error_reporting
    ; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
    ; Development Value: E_ALL
    ; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT
    ; html_errors
    ; Default Value: On
    ; Development Value: On
    ; Production value: On
    ; log_errors
    ; Default Value: Off
    ; Development Value: On
    ; Production Value: On
    ; max_input_time
    ; Default Value: -1 (Unlimited)
    ; Development Value: 60 (60 seconds)
    ; Production Value: 60 (60 seconds)
    ; output_buffering
    ; Default Value: Off
    ; Development Value: 4096
    ; Production Value: 4096
    ; register_argc_argv
    ; Default Value: On
    ; Development Value: Off
    ; Production Value: Off
    ; request_order
    ; Default Value: None
    ; Development Value: "GP"
    ; Production Value: "GP"
    ; session.gc_divisor
    ; Default Value: 100
    ; Development Value: 1000
    ; Production Value: 1000
    ; session.hash_bits_per_character
    ; Default Value: 4
    ; Development Value: 5
    ; Production Value: 5
    ; short_open_tag
    ; Default Value: On
    ; Development Value: Off
    ; Production Value: Off
    ; track_errors
    ; Default Value: Off
    ; Development Value: On
    ; Production Value: Off
    ; url_rewriter.tags
    ; Default Value: "a=href,area=href,frame=src,form=,fieldset="
    ; Development Value: "a=href,area=href,frame=src,input=src,form=fakeentry"
    ; Production Value: "a=href,area=href,frame=src,input=src,form=fakeentry"
    ; variables_order
    ; Default Value: "EGPCS"
    ; Development Value: "GPCS"
    ; Production Value: "GPCS"
    ; php.ini Options ;
    ; Name for user-defined php.ini (.htaccess) files. Default is ".user.ini"
    ;user_ini.filename = ".user.ini"
    ; To disable this feature set this option to empty value
    ;user_ini.filename =
    ; TTL for user-defined php.ini files (time-to-live) in seconds. Default is 300 seconds (5 minutes)
    ;user_ini.cache_ttl = 300
    ; Language Options ;
    ; Enable the PHP scripting language engine under Apache.
    ; http://php.net/engine
    engine = On
    ; This directive determines whether or not PHP will recognize code between
    ; <? and ?> tags as PHP source which should be processed as such. It is
    ; generally recommended that <?php and ?> should be used and that this feature
    ; should be disabled, as enabling it may result in issues when generating XML
    ; documents, however this remains supported for backward compatibility reasons.
    ; Note that this directive does not control the <?= shorthand tag, which can be
    ; used regardless of this directive.
    ; Default Value: On
    ; Development Value: Off
    ; Production Value: Off
    ; http://php.net/short-open-tag
    short_open_tag = Off
    ; Allow ASP-style <% %> tags.
    ; http://php.net/asp-tags
    asp_tags = Off
    ; The number of significant digits displayed in floating point numbers.
    ; http://php.net/precision
    precision = 14
    ; Output buffering is a mechanism for controlling how much output data
    ; (excluding headers and cookies) PHP should keep internally before pushing that
    ; data to the client. If your application's output exceeds this setting, PHP
    ; will send that data in chunks of roughly the size you specify.
    ; Turning on this setting and managing its maximum buffer size can yield some
    ; interesting side-effects depending on your application and web server.
    ; You may be able to send headers and cookies after you've already sent output
    ; through print or echo. You also may see performance benefits if your server is
    ; emitting less packets due to buffered output versus PHP streaming the output
    ; as it gets it. On production servers, 4096 bytes is a good setting for performance
    ; reasons.
    ; Note: Output buffering can also be controlled via Output Buffering Control
    ; functions.
    ; Possible Values:
    ; On = Enabled and buffer is unlimited. (Use with caution)
    ; Off = Disabled
    ; Integer = Enables the buffer and sets its maximum size in bytes.
    ; Note: This directive is hardcoded to Off for the CLI SAPI
    ; Default Value: Off
    ; Development Value: 4096
    ; Production Value: 4096
    ; http://php.net/output-buffering
    output_buffering = 4096
    ; You can redirect all of the output of your scripts to a function. For
    ; example, if you set output_handler to "mb_output_handler", character
    ; encoding will be transparently converted to the specified encoding.
    ; Setting any output handler automatically turns on output buffering.
    ; Note: People who wrote portable scripts should not depend on this ini
    ; directive. Instead, explicitly set the output handler using ob_start().
    ; Using this ini directive may cause problems unless you know what script
    ; is doing.
    ; Note: You cannot use both "mb_output_handler" with "ob_iconv_handler"
    ; and you cannot use both "ob_gzhandler" and "zlib.output_compression".
    ; Note: output_handler must be empty if this is set 'On' !!!!
    ; Instead you must use zlib.output_handler.
    ; http://php.net/output-handler
    ;output_handler =
    ; Transparent output compression using the zlib library
    ; Valid values for this option are 'off', 'on', or a specific buffer size
    ; to be used for compression (default is 4KB)
    ; Note: Resulting chunk size may vary due to nature of compression. PHP
    ; outputs chunks that are few hundreds bytes each as a result of
    ; compression. If you prefer a larger chunk size for better
    ; performance, enable output_buffering in addition.
    ; Note: You need to use zlib.output_handler instead of the standard
    ; output_handler, or otherwise the output will be corrupted.
    ; http://php.net/zlib.output-compression
    zlib.output_compression = Off
    ; http://php.net/zlib.output-compression-level
    ;zlib.output_compression_level = -1
    ; You cannot specify additional output handlers if zlib.output_compression
    ; is activated here. This setting does the same as output_handler but in
    ; a different order.
    ; http://php.net/zlib.output-handler
    ;zlib.output_handler =
    ; Implicit flush tells PHP to tell the output layer to flush itself
    ; automatically after every output block. This is equivalent to calling the
    ; PHP function flush() after each and every call to print() or echo() and each
    ; and every HTML block. Turning this option on has serious performance
    ; implications and is generally recommended for debugging purposes only.
    ; http://php.net/implicit-flush
    ; Note: This directive is hardcoded to On for the CLI SAPI
    implicit_flush = Off
    ; The unserialize callback function will be called (with the undefined class'
    ; name as parameter), if the unserializer finds an undefined class
    ; which should be instantiated. A warning appears if the specified function is
    ; not defined, or if the function doesn't include/implement the missing class.
    ; So only set this entry, if you really want to implement such a
    ; callback-function.
    unserialize_callback_func =
    ; When floats & doubles are serialized store serialize_precision significant
    ; digits after the floating point. The default value ensures that when floats
    ; are decoded with unserialize, the data will remain the same.
    serialize_precision = 17
    ; open_basedir, if set, limits all file operations to the defined directory
    ; and below. This directive makes most sense if used in a per-directory
    ; or per-virtualhost web server configuration file. This directive is
    ; *NOT* affected by whether Safe Mode is turned On or Off.
    ; http://php.net/open-basedir
    open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/etc/webapps/rutorrent/conf/:/usr/share/webapps/rutorrent/php/:/usr/share/webapps/rutorrent/
    ; This directive allows you to disable certain functions for security reasons.
    ; It receives a comma-delimited list of function names. This directive is
    ; *NOT* affected by whether Safe Mode is turned On or Off.
    ; http://php.net/disable-functions
    disable_functions =
    ; This directive allows you to disable certain classes for security reasons.
    ; It receives a comma-delimited list of class names. This directive is
    ; *NOT* affected by whether Safe Mode is turned On or Off.
    ; http://php.net/disable-classes
    disable_classes =
    ; Colors for Syntax Highlighting mode. Anything that's acceptable in
    ; <span style="color: ???????"> would work.
    ; http://php.net/syntax-highlighting
    ;highlight.string = #DD0000
    ;highlight.comment = #FF9900
    ;highlight.keyword = #007700
    ;highlight.default = #0000BB
    ;highlight.html = #000000
    ; If enabled, the request will be allowed to complete even if the user aborts
    ; the request. Consider enabling it if executing long requests, which may end up
    ; being interrupted by the user or a browser timing out. PHP's default behavior
    ; is to disable this feature.
    ; http://php.net/ignore-user-abort
    ;ignore_user_abort = On
    ; Determines the size of the realpath cache to be used by PHP. This value should
    ; be increased on systems where PHP opens many files to reflect the quantity of
    ; the file operations performed.
    ; http://php.net/realpath-cache-size
    ;realpath_cache_size = 16k
    ; Duration of time, in seconds for which to cache realpath information for a given
    ; file or directory. For systems with rarely changing files, consider increasing this
    ; value.
    ; http://php.net/realpath-cache-ttl
    ;realpath_cache_ttl = 120
    ; Enables or disables the circular reference collector.
    ; http://php.net/zend.enable-gc
    zend.enable_gc = On
    ; If enabled, scripts may be written in encodings that are incompatible with
    ; the scanner. CP936, Big5, CP949 and Shift_JIS are the examples of such
    ; encodings. To use this feature, mbstring extension must be enabled.
    ; Default: Off
    ;zend.multibyte = Off
    ; Allows to set the default encoding for the scripts. This value will be used
    ; unless "declare(encoding=...)" directive appears at the top of the script.
    ; Only affects if zend.multibyte is set.
    ; Default: ""
    ;zend.script_encoding =
    ; Miscellaneous ;
    ; Decides whether PHP may expose the fact that it is installed on the server
    ; (e.g. by adding its signature to the Web server header). It is no security
    ; threat in any way, but it makes it possible to determine whether you use PHP
    ; on your server or not.
    ; http://php.net/expose-php
    expose_php = On
    ; Resource Limits ;
    ; Maximum execution time of each script, in seconds
    ; http://php.net/max-execution-time
    ; Note: This directive is hardcoded to 0 for the CLI SAPI
    max_execution_time = 30
    ; Maximum amount of time each script may spend parsing request data. It's a good
    ; idea to limit this time on productions servers in order to eliminate unexpectedly
    ; long running scripts.
    ; Note: This directive is hardcoded to -1 for the CLI SAPI
    ; Default Value: -1 (Unlimited)
    ; Development Value: 60 (60 seconds)
    ; Production Value: 60 (60 seconds)
    ; http://php.net/max-input-time
    max_input_time = 60
    ; Maximum input variable nesting level
    ; http://php.net/max-input-nesting-level
    ;max_input_nesting_level = 64
    ; How many GET/POST/COOKIE input variables may be accepted
    ; max_input_vars = 1000
    ; Maximum amount of memory a script may consume (128MB)
    ; http://php.net/memory-limit
    memory_limit = 128M
    ; Error handling and logging ;
    ; This directive informs PHP of which errors, warnings and notices you would like
    ; it to take action for. The recommended way of setting values for this
    ; directive is through the use of the error level constants and bitwise
    ; operators. The error level constants are below here for convenience as well as
    ; some common settings and their meanings.
    ; By default, PHP is set to take action on all errors, notices and warnings EXCEPT
    ; those related to E_NOTICE and E_STRICT, which together cover best practices and
    ; recommended coding standards in PHP. For performance reasons, this is the
    ; recommend error reporting setting. Your production server shouldn't be wasting
    ; resources complaining about best practices and coding standards. That's what
    ; development servers and development settings are for.
    ; Note: The php.ini-development file has this setting as E_ALL. This
    ; means it pretty much reports everything which is exactly what you want during
    ; development and early testing.
    ; Error Level Constants:
    ; E_ALL - All errors and warnings (includes E_STRICT as of PHP 5.4.0)
    ; E_ERROR - fatal run-time errors
    ; E_RECOVERABLE_ERROR - almost fatal run-time errors
    ; E_WARNING - run-time warnings (non-fatal errors)
    ; E_PARSE - compile-time parse errors
    ; E_NOTICE - run-time notices (these are warnings which often result
    ; from a bug in your code, but it's possible that it was
    ; intentional (e.g., using an uninitialized variable and
    ; relying on the fact it's automatically initialized to an
    ; empty string)
    ; E_STRICT - run-time notices, enable to have PHP suggest changes
    ; to your code which will ensure the best interoperability
    ; and forward compatibility of your code
    ; E_CORE_ERROR - fatal errors that occur during PHP's initial startup
    ; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's
    ; initial startup
    ; E_COMPILE_ERROR - fatal compile-time errors
    ; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
    ; E_USER_ERROR - user-generated error message
    ; E_USER_WARNING - user-generated warning message
    ; E_USER_NOTICE - user-generated notice message
    ; E_DEPRECATED - warn about code that will not work in future versions
    ; of PHP
    ; E_USER_DEPRECATED - user-generated deprecation warnings
    ; Common Values:
    ; E_ALL (Show all errors, warnings and notices including coding standards.)
    ; E_ALL & ~E_NOTICE (Show all errors, except for notices)
    ; E_ALL & ~E_NOTICE & ~E_STRICT (Show all errors, except for notices and coding standards warnings.)
    ; E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Show only errors)
    ; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
    ; Development Value: E_ALL
    ; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT
    ; http://php.net/error-reporting
    error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
    ; This directive controls whether or not and where PHP will output errors,
    ; notices and warnings too. Error output is very useful during development, but
    ; it could be very dangerous in production environments. Depending on the code
    ; which is triggering the error, sensitive information could potentially leak
    ; out of your application such as database usernames and passwords or worse.
    ; It's recommended that errors be logged on production servers rather than
    ; having the errors sent to STDOUT.
    ; Possible Values:
    ; Off = Do not display any errors
    ; stderr = Display errors to STDERR (affects only CGI/CLI binaries!)
    ; On or stdout = Display errors to STDOUT
    ; Default Value: On
    ; Development Value: On
    ; Production Value: Off
    ; http://php.net/display-errors
    display_errors = Off
    ; The display of errors which occur during PHP's startup sequence are handled
    ; separately from display_errors. PHP's default behavior is to suppress those
    ; errors from clients. Turning the display of startup errors on can be useful in
    ; debugging configuration problems. But, it's strongly recommended that you
    ; leave this setting off on production servers.
    ; Default Value: Off
    ; Development Value: On
    ; Production Value: Off
    ; http://php.net/display-startup-errors
    display_startup_errors = Off
    ; Besides displaying errors, PHP can also log errors to locations such as a
    ; server-specific log, STDERR, or a location specified by the error_log
    ; directive found below. While errors should not be displayed on productions
    ; servers they should still be monitored and logging is a great way to do that.
    ; Default Value: Off
    ; Development Value: On
    ; Production Value: On
    ; http://php.net/log-errors
    log_errors = On
    ; Set maximum length of log_errors. In error_log information about the source is
    ; added. The default is 1024 and 0 allows to not apply any maximum length at all.
    ; http://php.net/log-errors-max-len
    log_errors_max_len = 1024
    ; Do not log repeated messages. Repeated errors must occur in same file on same
    ; line unless ignore_repeated_source is set true.
    ; http://php.net/ignore-repeated-errors
    ignore_repeated_errors = Off
    ; Ignore source of message when ignoring repeated messages. When this setting
    ; is On you will not log errors with repeated messages from different files or
    ; source lines.
    ; http://php.net/ignore-repeated-source
    ignore_repeated_source = Off
    ; If this parameter is set to Off, then memory leaks will not be shown (on
    ; stdout or in the log). This has only effect in a debug compile, and if
    ; error reporting includes E_WARNING in the allowed list
    ; http://php.net/report-memleaks
    report_memleaks = On
    ; This setting is on by default.
    ;report_zend_debug = 0
    ; Store the last error/warning message in $php_errormsg (boolean). Setting this value
    ; to On can assist in debugging and is appropriate for development servers. It should
    ; however be disabled on production servers.
    ; Default Value: Off
    ; Development Value: On
    ; Production Value: Off
    ; http://php.net/track-errors
    track_errors = Off
    ; Turn off normal error reporting and emit XML-RPC error XML
    ; http://php.net/xmlrpc-errors
    ;xmlrpc_errors = 0
    ; An XML-RPC faultCode
    ;xmlrpc_error_number = 0
    ; When PHP displays or logs an error, it has the capability of formatting the
    ; error message as HTML for easier reading. This directive controls whether
    ; the error message is formatted as HTML or not.
    ; Note: This directive is hardcoded to Off for the CLI SAPI
    ; Default Value: On
    ; Development Value: On
    ; Production value: On
    ; http://php.net/html-errors
    html_errors = On
    ; If html_errors is set to On *and* docref_root is not empty, then PHP
    ; produces clickable error messages that direct to a page describing the error
    ; or function causing the error in detail.
    ; You can download a copy of the PHP manual from http://php.net/docs
    ; and change docref_root to the base URL of your local copy including the
    ; leading '/'. You must also specify the file extension being used including
    ; the dot. PHP's default behavior is to leave these settings empty, in which
    ; case no links to documentation are generated.
    ; Note: Never use this feature for production boxes.
    ; http://php.net/docref-root
    ; Examples
    ;docref_root = "/phpmanual/"
    ; http://php.net/docref-ext
    ;docref_ext = .html
    ; String to output before an error message. PHP's default behavior is to leave
    ; this setting blank.
    ; http://php.net/error-prepend-string
    ; Example:
    ;error_prepend_string = "<span style='color: #ff0000'>"
    ; String to output after an error message. PHP's default behavior is to leave
    ; this setting blank.
    ; http://php.net/error-append-string
    ; Example:
    ;error_append_string = "</span>"
    ; Log errors to specified file. PHP's default behavior is to leave this value
    ; empty.
    ; http://php.net/error-log
    ; Example:
    ;error_log = php_errors.log
    ; Log errors to syslog (Event Log on Windows).
    ;error_log = syslog
    ;windows.show_crt_warning
    ; Default value: 0
    ; Development value: 0
    ; Production value: 0
    ; Data Handling ;
    ; The separator used in PHP generated URLs to separate arguments.
    ; PHP's default setting is "&".
    ; http://php.net/arg-separator.output
    ; Example:
    ;arg_separator.output = "&amp;"
    ; List of separator(s) used by PHP to parse input URLs into variables.
    ; PHP's default setting is "&".
    ; NOTE: Every character in this directive is considered as separator!
    ; http://php.net/arg-separator.input
    ; Example:
    ;arg_separator.input = ";&"
    ; This directive determines which super global arrays are registered when PHP
    ; starts up. G,P,C,E & S are abbreviations for the following respective super
    ; globals: GET, POST, COOKIE, ENV and SERVER. There is a performance penalty
    ; paid for the registration of these arrays and because ENV is not as commonly
    ; used as the others, ENV is not recommended on productions servers. You
    ; can still get access to the environment variables through getenv() should you
    ; need to.
    ; Default Value: "EGPCS"
    ; Development Value: "GPCS"
    ; Production Value: "GPCS";
    ; http://php.net/variables-order
    variables_order = "GPCS"
    ; This directive determines which super global data (G,P,C,E & S) should
    ; be registered into the super global array REQUEST. If so, it also determines
    ; the order in which that data is registered. The values for this directive are
    ; specified in the same manner as the variables_order directive, EXCEPT one.
    ; Leaving this value empty will cause PHP to use the value set in the
    ; variables_order directive. It does not mean it will leave the super globals
    ; array REQUEST empty.
    ; Default Value: None
    ; Development Value: "GP"
    ; Production Value: "GP"
    ; http://php.net/request-order
    request_order = "GP"
    ; This directive determines whether PHP registers $argv & $argc each time it
    ; runs. $argv contains an array of all the arguments passed to PHP when a script
    ; is invoked. $argc contains an integer representing the number of arguments
    ; that were passed when the script was invoked. These arrays are extremely
    ; useful when running scripts from the command line. When this directive is
    ; enabled, registering these variables consumes CPU cycles and memory each time
    ; a script is executed. For performance reasons, this feature should be disabled
    ; on production servers.
    ; Note: This directive is hardcoded to On for the CLI SAPI
    ; Default Value: On
    ; Development Value: Off
    ; Production Value: Off
    ; http://php.net/register-argc-argv
    register_argc_argv = Off
    ; When enabled, the ENV, REQUEST and SERVER variables are created when they're
    ; first used (Just In Time) instead of when the script starts. If these
    ; variables are not used within a script, having this directive on will result
    ; in a performance gain. The PHP directive register_argc_argv must be disabled
    ; for this directive to have any affect.
    ; http://php.net/auto-globals-jit
    auto_globals_jit = On
    ; Whether PHP will read the POST data.
    ; This option is enabled by default.
    ; Most likely, you won't want to disable this option globally. It causes $_POST
    ; and $_FILES to always be empty; the only way you will be able to read the
    ; POST data will be through the php://input stream wrapper. This can be useful
    ; to proxy requests or to process the POST data in a memory efficient fashion.
    ; http://php.net/enable-post-data-reading
    ;enable_post_data_reading = Off
    ; Maximum size of POST data that PHP will accept.
    ; Its value may be 0 to disable the limit. It is ignored if POST data reading
    ; is disabled through enable_post_data_reading.
    ; http://php.net/post-max-size
    post_max_size = 8M
    ; Automatically add files before PHP document.
    ; http://php.net/auto-prepend-file
    auto_prepend_file =
    ; Automatically add files after PHP document.
    ; http://php.net/auto-append-file
    auto_append_file =
    ; By default, PHP will output a character encoding using
    ; the Content-type: header. To disable sending of the charset, simply
    ; set it to be empty.
    ; PHP's built-in default is text/html
    ; http://php.net/default-mimetype
    default_mimetype = "text/html"
    ; PHP's default character set is set to empty.
    ; http://php.net/default-charset
    ;default_charset = "UTF-8"
    ; Always populate the $HTTP_RAW_POST_DATA variable. PHP's default behavior is
    ; to disable this feature. If post reading is disabled through
    ; enable_post_data_reading, $HTTP_RAW_POST_DATA is *NOT* populated.
    ; http://php.net/always-populate-raw-post-data
    ;always_populate_raw_post_data = On
    ; Paths and Directories ;
    ; UNIX: "/path1:/path2"
    include_path = ".:/usr/share/pear"
    ; Windows: "\path1;\path2"
    ;include_path = ".;c:\php\includes"
    ; PHP's default setting for include_path is ".;/path/to/php/pear"
    ; http://php.net/include-path
    ; The root of the PHP pages, used only if nonempty.
    ; if PHP was not compiled with FORCE_REDIRECT, you SHOULD set doc_root
    ; if you are running php as a CGI under any web server (other than IIS)
    ; see documentation for security issues. The alternate is to use the
    ; cgi.force_redirect configuration below
    ; http://php.net/doc-root
    doc_root =
    ; The directory under which PHP opens the script using /~username used only
    ; if nonempty.
    ; http://php.net/user-dir
    user_dir =
    ; Directory in which the loadable extensions (modules) reside.
    ; http://php.net/extension-dir
    extension_dir = "/usr/lib/php/modules/"
    ; On windows:
    ; extension_dir = "ext"
    ; Directory where the temporary files should be placed.
    ; Defaults to the system default (see sys_get_temp_dir)
    ; sys_temp_dir = "/tmp"
    ; Whether or not to enable the dl() function. The dl() function does NOT work
    ; properly in multithreaded servers, such as IIS or Zeus, and is automatically
    ; disabled on them.
    ; http://php.net/enable-dl
    enable_dl = Off
    ; cgi.force_redirect is necessary to provide security running PHP as a CGI under
    ; most web servers. Left undefined, PHP turns this on by default. You can
    ; turn it off here AT YOUR OWN RISK
    ; **You CAN safely turn this off for IIS, in fact, you MUST.**
    ; http://php.net/cgi.force-redirect
    ;cgi.force_redirect = 1
    ; if cgi.nph is enabled it will force cgi to always sent Status: 200 with
    ; every request. PHP's default behavior is to disable this feature.
    ;cgi.nph = 1
    ; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape
    ; (iPlanet) web servers, you MAY need to set an environment variable name that PHP
    ; will look for to know it is OK to continue execution. Setting this variable MAY
    ; cause security issues, KNOW WHAT YOU ARE DOING FIRST.
    ; http://php.net/cgi.redirect-status-env
    ;cgi.redirect_status_env =
    ; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's
    ; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
    ; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting
    ; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting
    ; of zero causes PHP to behave as before. Default is 1. You should fix your scripts
    ; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
    ; http://php.net/cgi.fix-pathinfo
    ;cgi.fix_pathinfo=1
    ; FastCGI under IIS (on WINNT based OS) supports the ability to impersonate
    ; security tokens of the calling client. This allows IIS to define the
    ; security context that the request runs under. mod_fastcgi under Apache
    ; does not currently support this feature (03/17/2002)
    ; Set to 1 if running under IIS. Default is zero.
    ; http://php.net/fastcgi.impersonate
    ;fastcgi.impersonate = 1
    ; Disable logging through FastCGI connection. PHP's default behavior is to enable
    ; this feature.
    ;fastcgi.logging = 0
    ; cgi.rfc2616_headers configuration option tells PHP what type of headers to
    ; use when sending HTTP response code. If it's set 0 PHP sends Status: header that
    ; is supported by Apache. When this option is set to 1 PHP will send
    ; RFC2616 compliant header.
    ; Default is zero.
    ; http://php.net/cgi.rfc2616-headers
    ;cgi.rfc2616_headers = 0
    ; File Uploads ;
    ; Whether to allow HTTP file uploads.
    ; http://php.net/file-uploads
    file_uploads = On
    ; Temporary directory for HTTP uploaded files (will use system default if not
    ; specified).
    ; http://php.net/upload-tmp-dir
    ;upload_tmp_dir =
    ; Maximum allowed size for uploaded files.
    ; http://php.net/upload-max-filesize
    upload_max_filesize = 2M
    ; Maximum number of files that can be uploaded via a single request
    max_file_uploads = 20
    ; Fopen wrappers ;
    ; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
    ; http://php.net/allow-url-fopen
    allow_url_fopen = On
    ; Whether to allow include/require to open URLs (like http:// or ftp://) as files.
    ; http://php.net/allow-url-include
    allow_url_include = Off
    ; Define the anonymous ftp password (your email address). PHP's default setting
    ; for this is empty.
    ; http://php.net/from
    ;from="[email protected]"
    ; Define the User-Agent string. PHP's default setting for this is empty.
    ; http://php.net/user-agent
    ;user_agent="PHP"
    ; Default timeout for socket based streams (seconds)
    ; http://php.net/default-socket-timeout
    default_socket_timeout = 60
    ; If your scripts have to deal with files from Macintosh systems,
    ; or you are running on a Mac and need to deal with files from
    ; unix or win32 systems, setting this flag will cause PHP to
    ; automatically detect the EOL character in those files so that
    ; fgets() and file() will work regardless of the source of the file.
    ; http://php.net/auto-detect-line-endings
    ;auto_detect_line_endings = Off
    ; Dynamic Extensions ;
    ; If you wish to have an extension loaded automatically, use the following
    ; syntax:
    ; extension=modulename.extension
    ; For example, on Windows:
    ; extension=msql.dll
    ; ... or under UNIX:
    ; extension=msql.so
    ; ... or with a path:
    ; extension=/path/to/extension/msql.so
    ; If you only provide the name of the extension, PHP will look for it in its
    ; default extension directory.
    ;extension=bcmath.so
    ;extension=bz2.so
    ;extension=calendar.so
    extension=curl.so
    ;extension=dba.so
    ;extension=enchant.so
    ;extension=exif.so
    ;extension=ftp.so
    ;extension=gd.so
    extension=gettext.so
    ;extension=gmp.so
    ;extension=iconv.so
    ;extension=imap.so
    ;extension=intl.so
    ;extension=ldap.so
    ;extension=mcrypt.so
    ;extension=mssql.so
    ;extension=mysqli.so
    ;extension=mysql.so
    ;extension=odbc.so
    ;zend_extension=opcache.so
    ;extension=openssl.so
    ;extension=pdo_mysql.so
    ;extension=pdo_odbc.so
    ;extension=pdo_pgsql.so
    ;extension=pdo_sqlite.so
    ;extension=pgsql.so
    ;extension=phar.so
    ;extension=posix.so
    ;extension=pspell.so
    ;extension=shmop.so
    ;extension=snmp.so
    ;extension=soap.so
    ;extension=sockets.so
    ;extension=sqlite3.so
    ;extension=sysvmsg.so
    ;extension=sysvsem.so
    ;extension=sysvshm.so
    ;extension=tidy.so
    ;extension=xmlrpc.so
    ;extension=xsl.so
    ;extension=zip.so
    ; Module Settings ;
    [CLI Server]
    ; Whether the CLI web server uses ANSI color coding in its terminal output.
    cli_server.color = On
    [Date]
    ; Defines the default timezone used by the date functions
    ; http://php.net/date.timezone
    ;date.timezone =
    ; http://php.net/date.default-latitude
    ;date.default_latitude = 31.7667
    ; http://php.net/date.default-longitude
    ;date.default_longitude = 35.2333
    ; http://php.net/date.sunrise-zenith
    ;date.sunrise_zenith = 90.583333
    ; http://php.net/date.sunset-zenith
    ;date.sunset_zenith = 90.583333
    [filter]
    ; http://php.net/filter.default
    ;filter.default = unsafe_raw
    ; http://php.net/filter.default-flags
    ;filter.default_flags =
    [iconv]
    ;iconv.input_encoding = ISO-8859-1
    ;iconv.internal_encoding = ISO-8859-1
    ;iconv.output_encoding = ISO-8859-1
    [intl]
    ;intl.default_locale =
    ; This directive allows you to produce PHP errors when some error
    ; happens within intl functions. The value is the level of the error produced.
    ; Default is 0, which does not produce any errors.
    ;intl.error_level = E_WARNING
    [sqlite]
    ; http://php.net/sqlite.assoc-case
    ;sqlite.assoc_case = 0
    [sqlite3]
    ;sqlite3.extension_dir =
    [Pcre]
    ;PCRE library backtracking limit.
    ; http://php.net/pcre.backtrack-limit
    ;pcre.backtrack_limit=100000
    ;PCRE library recursion limit.
    ;Please note that if you set this value to a high number you may consume all
    ;the available process stack and eventually crash PHP (due to reaching the
    ;stack size limit imposed by the Operating System).
    ; http://php.net/pcre.recursion-limit
    ;pcre.recursion_limit=100000
    [Pdo]
    ; Whether to pool ODBC connections. Can be one of "strict", "relaxed" or "off"
    ; http://php.net/pdo-odbc.connection-pooling
    ;pdo_odbc.connection_pooling=strict
    ;pdo_odbc.db2_instance_name
    [Pdo_mysql]
    ; If mysqlnd is used: Number of cache slots for the internal result set cache
    ; http://php.net/pdo_mysql.cache_size
    pdo_mysql.cache_size = 2000
    ; Default socket name for local MySQL connects. If empty, uses the built-in
    ; MySQL defaults.
    ; http://php.net/pdo_mysql.default-socket
    pdo_mysql.default_socket=
    [Phar]
    ; http://php.net/phar.readonly
    ;phar.readonly = On
    ; http://php.net/phar.require-hash
    ;phar.require_hash = On
    ;phar.cache_list =
    [mail function]
    ; For Win32 only.
    ; http://php.net/smtp
    SMTP = localhost
    ; http://php.net/smtp-port
    smtp_port = 25
    ; For Win32 only.
    ; http://php.net/sendmail-from
    ;sendmail_from = [email protected]
    ; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
    ; http://php.net/sendmail-path
    ;sendmail_path =
    ; Force the addition of the specified parameters to be passed as extra parameters
    ; to the sendmail binary. These parameters will always replace the value of
    ; the 5th parameter to mail(), even in safe mode.
    ;mail.force_extra_parameters =
    ; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
    mail.add_x_header = On
    ; The path to a log file that will log all mail() calls. Log entries include
    ; the full path of the script, line number, To address and headers.
    ;mail.log =
    ; Log mail to syslog (Event Log on Windows).
    ;mail.log = syslog
    [SQL]
    ; http://php.net/sql.safe-mode
    sql.safe_mode = Off
    [ODBC]
    ; http://php.net/odbc.default-db
    ;odbc.default_db = Not yet implemented
    ; http://php.net/odbc.default-user
    ;odbc.default_user = Not yet implemented
    ; http://php.net/odbc.default-pw
    ;odbc.default_pw = Not yet implemented
    ; Controls the ODBC cursor model.
    ; Default: SQL_CURSOR_STATIC (default).
    ;odbc.default_cursortype
    ; Allow or prevent persistent links.
    ; http://php.net/odbc.allow-persistent
    odbc.allow_persistent = On
    ; Check that a connection is still valid before reuse.
    ; http://php.net/odbc.check-persistent
    odbc.check_persistent = On
    ; Maximum number of persistent links. -1 means no limit.
    ; http://php.net/odbc.max-persistent
    odbc.max_persistent = -1
    ; Maximum number of links (persistent + non-persistent). -1 means no limit.
    ; http://php.net/odbc.max-links
    odbc.max_links = -1
    ; Handling of LONG fields. Returns number of bytes to variables. 0 means
    ; passthru.
    ; http://php.net/odbc.defaultlrl
    odbc.defaultlrl = 4096
    ; Handling of binary data. 0 means passthru, 1 return as is, 2 convert to char.
    ; See the documentation on odbc_binmode and odbc_longreadlen for an explanation
    ; of odbc.defaultlrl and odbc.defaultbinmode
    ; http://php.net/odbc.defaultbinmode
    odbc.defaultbinmode = 1
    ;birdstep.max_links = -1
    [Interbase]
    ; Allow or prevent persistent links.
    ibase.allow_persistent = 1
    ; Maximum number of persistent links. -1 means no limit.
    ibase.max_persistent = -1
    ; Maximum number of links (persistent + non-persistent). -1 means no limit.
    ibase.max_links = -1
    ; Default database name for ibase_connect().
    ;ibase.default_db =
    ; Default username for ibase_connect().
    ;ibase.default_user =
    ; Default password for ibase_connect().
    ;ibase.default_password =
    ; Default charset for ibase_connect().
    ;ibase.default_charset =
    ; Default timestamp format.
    ibase.timestampformat = "%Y-%m-%d %H:%M:%S"
    ; Default date format.
    ibase.dateformat = "%Y-%m-%d"
    ; Default time format.
    ibase.timeformat = "%H:%M:%S"
    [MySQL]
    ; Allow accessing, from PHP's perspective, local files with LOAD DATA statements
    ; http://php.net/mysql.allow_local_infile
    mysql.allow_local_infile = On
    ; Allow or prevent persistent links.
    ; http://php.net/mysql.allow-persistent
    mysql.allow_persistent = On
    ; If mysqlnd is used: Number of cache slots for the internal result set cache
    ; http://php.net/mysql.cache_size
    mysql.cache_size = 2000
    ; Maximum number of persistent links. -1 means no limit.
    ; http://php.net/mysql.max-persistent
    mysql.max_persistent = -1
    ; Maximum number of links (persistent + non-persistent). -1 means no limit.
    ; http://php.net/mysql.max-links
    mysql.max_links = -1
    ; Default port number for mysql_connect(). If unset, mysql_connect() will use
    ; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the
    ; compile-time value defined MYSQL_PORT (in that order). Win32 will only look
    ; at MYSQL_PORT.
    ; http://php.net/mysql.default-port
    mysql.default_port =
    ; Default socket name for local MySQL connects. If empty, uses the built-in
    ; MySQL defaults.
    ; http://php.net/mysql.default-socket
    mysql.default_socket =
    ; Default host for mysql_connect() (doesn't apply in safe mode).
    ; http://php.net/mysql.default-host
    mysql.default_host =
    ; Default user for mysql_connect() (doesn't apply in safe mode).
    ; http://php.net/mysql.default-user
    mysql.default_user =
    ; Default password for mysql_connect() (doesn't apply in safe mode).
    ; Note that this is generally a *bad* idea to store passwords in this file.
    ; *Any* user with PHP access can run 'echo get_cfg_var("mysql.default_password")
    ; and reveal this password! And of course, any users with read access to this
    ; file will be able to reveal the password as well.
    ; http://php.net/mysql.default-password
    mysql.default_password =
    ; Maximum time (in seconds) for connect timeout. -1 means no limit
    ; http://php.net/mysql.connect-timeout
    mysql.connect_timeout = 60
    ; Trace mode. When trace_mode is active (=On), warnings for table/index scans and
    ; SQL-Errors will be displayed.
    ; http://php.net/mysql.trace-mode
    mysql.trace_mode = Off
    [MySQLi]
    ; Maximum number of persistent links. -1 means no limit.
    ; http://php.net/mysqli.max-persistent
    mysqli.max_persistent = -1
    ; Allow accessing, from PHP's perspective, local files with LOAD DATA statements
    ; http://php.net/mysqli.allow_local_infile
    ;mysqli.allow_local_infile = On
    ; Allow or prevent persistent links.
    ; http://php.net/mysqli.allow-persistent
    mysqli.allow_persistent = On
    ; Maximum number of links. -1 means no limit.
    ; http://php.net/mysqli.max-links
    mysqli.max_links = -1
    ; If mysqlnd is used: Number of cache slots for the internal result set cache
    ; http://php.net/mysqli.cache_size
    mysqli.cache_size = 2000
    ; Default port number for mysqli_connect(). If unset, mysqli_connect() will use
    ; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the
    ; compile-time value defined MYSQL_PORT (in that order). Win32 will only look
    ; at MYSQL_PORT.
    ; http://php.net/mysqli.default-port
    mysqli.default_port = 3306
    ; Default socket name for local MySQL connects. If empty, uses the built-in
    ; MySQL defaults.
    ; http://php.net/mysqli.default-socket
    mysqli.default_socket =
    ; Default host for mysql_connect() (doesn't apply in safe mode).
    ; http://php.net/mysqli.default-host
    mysqli.default_host =
    ; Default user for mysql_connect() (doesn't apply in safe mode).
    ; http://php.net/mysqli.default-user
    mysqli.default_user =
    ; Default password for mysqli_connect() (doesn't apply in safe mode).
    ; Note that this is generally a *bad* idea to store passwords in this file.
    ; *Any* user with PHP access can run 'echo get_cfg_var("mysqli.default_pw")
    ; and reveal this password! And of course, any users with read access to this
    ; file will be able to reveal the password as well.
    ; http://php.net/mysqli.default-pw
    mysqli.default_pw =
    ; Allow or prevent reconnect
    mysqli.reconnect = Off
    [mysqlnd]
    ; Enable / Disable collection of general statistics by mysqlnd which can be
    ; used to tune and monitor MySQL operations.
    ; http://php.net/mysqlnd.collect_statistics
    mysqlnd.collect_statistics = On
    ; Enable / Disable collection of memory usage statistics by mysqlnd which can be
    ; used to tune and monitor MySQL operations.
    ; http://php.net/mysqlnd.collect_memory_statistics
    mysqlnd.collect_memory_statistics = Off
    ; Size of a pre-allocated buffer used when sending commands to MySQL in bytes.
    ; http://php.net/mysqlnd.net_cmd_buffer_size
    ;mysqlnd.net_cmd_buffer_size = 2048
    ; Size of a pre-allocated buffer used for reading data sent by the server in
    ; bytes.
    ; http://php.net/mysqlnd.net_read_buffer_size
    ;mysqlnd.net_read_buffer_size = 32768
    [OCI8]
    ; Connection: Enables privileged connections using external
    ; credentials (OCI_SYSOPER, OCI_SYSDBA)
    ; http://php.net/oci8.privileged-connect
    ;oci8.privileged_connect = Off
    ; Connection: The maximum number of persistent OCI8 connections per
    ; process. Using -1 means no limit.
    ; http://php.net/oci8.max-persistent
    ;oci8.max_persistent = -1
    ; Connection: The maximum number of seconds a process is allowed to
    ; maintain an idle persistent connection. Using -1 means idle
    ; persistent connections will be maintained forever.
    ; http://php.net/oci8.persistent-timeout
    ;oci8.persistent_timeout = -1
    ; Connection: The number of seconds that must pass before issuing a
    ; ping during oci_pconnect() to check the connection validity. When
    ; set to 0, each oci_pconnect() will cause a ping. Using -1 disables
    ; pings completely.
    ; http://php.net/oci8.ping-interval
    ;oci8.ping_interval = 60
    ; Connection: Set this to a user chosen connection class to be used
    ; for all pooled server requests with Oracle 11g Database Resident
    ; Connection Pooling (DRCP). To use DRCP, this value should be set to
    ; the same string for all web servers running the same application,
    ; the database pool must be configured, and the connection string must
    ; specify to use a pooled server.
    ;oci8.connection_class =
    ; High Availability: Using On lets PHP receive Fast Application
    ; Notification (FAN) events generated when a database node fails. The
    ; database must also be configured to post FAN events.
    ;oci8.events = Off
    ; Tuning: This option enables statement

    Hi comrades,
    I use rtorrent in terminal without problems but recently I got interested in rutorrent.
    I've been following the rtorrent wiki and rutorrent wiki to get to this point.
    First of all rtorrent is working fine in terminal, but with rutorrent I only get to this far: http://i637.photobucket.com/albums/uu93 … 1403737709
    As you can see in the upeer right of the image it's trying to connect and in the log section is throwing me this:
    [25.06.2014 18:37:22] WebUI started.
    [25.06.2014 18:37:23] Bad response from server: (200 [parsererror,getplugins]) <?php require_once( "util.php" ); require_once( "settings.php" ); function pluginsSort($a, $b) { $lvl1 = (float) $a["info"]["plugin.runlevel"]; $lvl2 = (float) $b["info"]["plugin.runlevel"]; if($lvl1>$lvl2) return(1); if($lvl1<$lvl2) return(-1); return( strcmp($a["name"],$b["name"]) ); } function getFlag($permissions,$pname,$fname) { $ret = true; if(array_key_exists($pname,$permissions) && array_key_exists($fname,$permissions[$pname])) $ret = $permissions[$pname][$fname]; else if(array_key_exists("default",$permissions) && array_key_exists($fname,$permissions["default"])) $ret = $permissions["default"][$fname]; return($ret); } function getPluginInfo( $name, $permissions ) { $info = array( 'rtorrent.need'=>1, 'rtorrent.remote'=>'ok', 'rtorrent.external.warning'=>array(), 'rtorrent.external.error'=>array(), 'rtorrent.script.error'=>array(), 'rtorrent.php.error'=>array(), 'rtorrent.version'=>0x802, 'rtorrent.version.readable'=>'0.8.2', 'plugin.may_be_shutdowned'=>1, 'plugin.may_be_launched'=>1, 'plugin.runlevel'=>10.0, 'plugin.description'=>'', 'plugin.author'=>'unknown', 'plugin.dependencies'=>array(), 'php.version'=>0x50000, 'php.version.readable'=>'5.0.0', 'php.extensions.warning'=>array(), 'php.extensions.error'=>array(), 'web.external.warning'=>array(), 'web.external.error'=>array(), 'plugin.help'=>'', ); $fname = "../plugins/".$name."/plugin.info"; if(is_readable($fname)) { $lines = file($fname); foreach($lines as $line) { $fields = explode(":",$line,2); if(count($fields)==2) { $value = addcslashes(trim($fields[1]),"\\\'\"\n\r\t"); $field = trim($fields[0]); switch($field) { case "plugin.help": case "plugin.author": case "plugin.description": case "rtorrent.remote": { $info[$field] = $value; break; } case "plugin.may_be_shutdowned": case "plugin.may_be_launched": case "rtorrent.need": { $info[$field] = intval($value); break; } case "plugin.version": case "plugin.runlevel": { $info[$field] = floatval($value); break; } case "rtorrent.version": case "php.version": { $version = explode('.', $value); $info[$field] = (intval($version[0])<<16) + (intval($version[1])<<8) + intval($version[2]); $info[$field.'.readable'] = $value; break; } case "plugin.dependencies": case "rtorrent.external.warning": case "rtorrent.external.error": case "rtorrent.script.error": case "rtorrent.php.error": case "web.external.warning": case "web.external.error": case "php.extensions.warning": case "php.extensions.error": { $info[$field] = explode(',', $value); break; } // for compatibility case "author": case "description": { $info['plugin.'.$field] = $value; break; } case "remote": { $info['rtorrent.remote'] = $value; break; } case "need_rtorrent": { $info['rtorrent.need'] = intval($value); break; } case "version": case "runlevel": { $info['plugin.'.$field] = floatval($value); break; } } } } $perms = 0; if($permissions!==false) { if(!getFlag($permissions,$name,"enabled")) return(false); $flags = array( "canChangeToolbar" => 0x0001, "canChangeMenu" => 0x0002, "canChangeOptions" => 0x0004, "canChangeTabs" => 0x0008, "canChangeColumns" => 0x0010, "canChangeStatusBar" => 0x0020, "canChangeCategory" => 0x0040, "canBeShutdowned" => 0x0080, /* "canBeLaunched" => 0x0100, */ ); foreach($flags as $flagName=>$flagVal) if(!getFlag($permissions,$name,$flagName)) $perms|=$flagVal; if(!$info["plugin.may_be_shutdowned"]) $perms|=$flags["canBeShutdowned"]; } $info["perms"] = $perms; } return(array_key_exists("plugin.version",$info) ? $info : false); } function findRemoteEXE( $exe, $err, &$remoteRequests ) { $st = getSettingsPath().'/'.rand(); if(!array_key_exists($exe,$remoteRequests)) { $path=realpath(dirname('.')); global $pathToExternals; $add = ''; if(isset($pathToExternals[$exe]) && !empty($pathToExternals[$exe])) $add = " ".escapeshellarg($pathToExternals[$exe]); $req = new rXMLRPCRequest(new rXMLRPCCommand("execute", array( "sh", "-c", escapeshellarg(addslash($path)."test.sh")." ".$exe." ".escapeshellarg($st).$add))); $req->run(); $remoteRequests[$exe] = array( "path"=>$st, "err"=>array() ); } $remoteRequests[$exe]["err"][] = $err; } function testRemoteRequests($remoteRequests) { $ret = ""; foreach($remoteRequests as $exe=>$info) { $file = $info["path"].$exe.".found"; if(!is_file($file)) { foreach($info["err"] as $err) $ret.=$err; } else @unlink($file); } return($ret); } $jResult = "theWebUI.deltaTime = 0;\n"; $access = getConfFile('access.ini'); if(!$access) $access = "../conf/access.ini"; $permissions = parse_ini_file($access); $settingsFlags = array( "showDownloadsPage" => 0x0001, "showConnectionPage" => 0x0002, "showBittorentPage" => 0x0004, "showAdvancedPage" => 0x0008, "showPluginsTab" => 0x0010, "canChangeULRate" => 0x0020, "canChangeDLRate" => 0x0040, "canChangeTorrentProperties" => 0x0080, ); $perms = 0; foreach($settingsFlags as $flagName=>$flagVal) if(array_key_exists($flagName,$permissions) && $permissions[$flagName]) $perms|=$flagVal; $jResult .= "theWebUI.showFlags = ".$perms.";\n"; $jResult .= "theURLs.XMLRPCMountPoint = '".$XMLRPCMountPoint."';\n"; $jResult.="theWebUI.systemInfo = {};\ntheWebUI.systemInfo.php = { canHandleBigFiles : ".((PHP_INT_SIZE<=4) ? "false" : "true")." };\n"; if($handle = opendir('../plugins')) { ignore_user_abort(true); set_time_limit(0); makeDirectory(getTempDirectory()); if(!@file_exists($tempDirectory.'/.') || !is_readable($tempDirectory) || !is_writable($tempDirectory)) $jResult.="noty(theUILang.badTempPath+' (".$tempDirectory.")','error');"; if(!function_exists('preg_match_all')) { $jResult.="noty(theUILang.PCRENotFound,'error');"; $jResult.="theWebUI.systemInfo.rTorrent = { started: false, iVersion : 0, version : '?', libVersion : '?' };\n"; } else { $remoteRequests = array(); $theSettings = rTorrentSettings::get(true); if(!$theSettings->linkExist) { $jResult.="noty(theUILang.badLinkTorTorrent,'error');"; $jResult.="theWebUI.systemInfo.rTorrent = { started: false, iVersion : 0, version : '?', libVersion : '?', apiVersion : 0 };\n"; } else { if($theSettings->idNotFound) $jResult.="noty(theUILang.idNotFound,'error');"; $jResult.="theWebUI.systemInfo.rTorrent = { started: true, iVersion : ".$theSettings->iVersion.", version : '". $theSettings->version."', libVersion : '".$theSettings->libVersion."', apiVersion : ".$theSettings->apiVersion." };\n"; if($theSettings->mostOfMethodsRenamed) $jResult.="theWebUI.systemInfo.rTorrent.newMethodsSet = true;\n"; if($do_diagnostic) { $up = getUploadsPath(); $st = getSettingsPath(); @chmod($up,$profileMask); @chmod($st,$profileMask); @chmod('./test.sh',$profileMask & 0755); if(PHP_USE_GZIP && (findEXE('gzip')===false)) { @define('PHP_USE_GZIP', false); $jResult.="noty(theUILang.gzipNotFound,'error');"; } if(PHP_INT_SIZE<=4) { if(findEXE('stat')===false) $jResult.="noty(theUILang.statNotFoundW,'error');"; findRemoteEXE('stat',"noty(theUILang.statNotFound,'error');",$remoteRequests); } if(!@file_exists($up.'/.') || !is_readable($up) || !is_writable($up)) $jResult.="noty(theUILang.badUploadsPath+' (".$up.")','error');"; if(!@file_exists($st.'/.') || !is_readable($st) || !is_writable($st)) $jResult.="noty(theUILang.badSettingsPath+' (".$st.")','error');"; if(isLocalMode() && !$theSettings->idNotFound) { if($theSettings->uid<0) $jResult.="noty(theUILang.cantObtainUser,'error');"; else { if(!isUserHavePermission($theSettings->uid,$theSettings->gid,$tempDirectory,0x0007)) $jResult.="noty(theUILang.badTempPath2+' (".$tempDirectory.")','error');"; if(!isUserHavePermission($theSettings->uid,$theSettings->gid,$up,0x0007)) $jResult.="noty(theUILang.badUploadsPath2+' (".$up.")','error');"; if(!isUserHavePermission($theSettings->uid,$theSettings->gid,$st,0x0007)) $jResult.="noty(theUILang.badSettingsPath2+' (".$st.")','error');"; if(!isUserHavePermission($theSettings->uid,$theSettings->gid,'./test.sh',0x0005)) $jResult.="noty(theUILang.badTestPath+' (".realpath('./test.sh').")','error');"; } } if($theSettings->badXMLRPCVersion) $jResult.="noty(theUILang.badXMLRPCVersion,'error');"; } } $plg = getConfFile('plugins.ini'); if(!$plg) $plg = "../conf/plugins.ini"; $permissions = parse_ini_file($plg,true); $init = array(); $names = array(); $disabled = array(); $phpVersion = phpversion(); if( ($pos=strpos($phpVersion, '-'))!==false ) $phpVersion = substr($phpVersion,0,$pos); $phpIVersion = explode('.',$phpVersion); $phpIVersion = (intval($phpIVersion[0])<<16) + (intval($phpIVersion[1])<<8) + intval($phpIVersion[2]); $phpRequired = false; $userPermissions = array( "__hash__"=>"plugins.dat" ); $cache = new rCache(); $cache->get($userPermissions); $cantBeShutdowned = 0x0080; $canBeLaunched = 0x0100; $disabledByUser = 0x8000; $loadedExtensions = array_map("strtolower",get_loaded_extensions()); while(false !== ($file = readdir($handle))) { if($file != "." && $file != ".." && is_dir('../plugins/'.$file)) { if(!array_key_exists($file,$userPermissions)) $userPermissions[$file] = true; $info = getPluginInfo( $file, $permissions ); if($info) { if( $info["plugin.may_be_launched"] && getFlag($permissions,$file,"enabled")=="user-defined") { $info["perms"] |= $canBeLaunched; if(!$userPermissions[$file]) { $info["perms"] |= $disabledByUser; $disabled[$file] = $info; $info = false; } } else $info["perms"] |= $cantBeShutdowned; } if($info!==false) { if(!$theSettings->linkExist && $info["rtorrent.need"]) { $disabled[$file] = $info; continue; } if($info['php.version']>$phpIVersion) { $jResult.="noty('".$file.": '+theUILang.badPHPVersion+' '+'".$info['php.version.readable']."'+'.','error');"; $disabled[$file] = $info; continue; } $extError = false; foreach( $info['php.extensions.error'] as $extension ) if(!in_array( $extension, $loadedExtensions )) { $jResult.="noty('".$file.": '+theUILang.phpExtensionNotFoundError+' ('+'".$extension."'+').','error');"; $extError = true; } if($extError) { $disabled[$file] = $info; continue; } if(count($info['web.external.error']) || count($info['web.external.warning']) || count($info['rtorrent.external.error']) || count($info['rtorrent.external.warning'])) eval( getPluginConf( $file ) ); foreach( $info['web.external.error'] as $external ) { if(findEXE($external)==false) { $jResult.="noty('".$file.": '+theUILang.webExternalNotFoundError+' ('+'".$external."'+').','error');"; $extError = true; } else if($external=='php') $phpRequired = true; } if($extError) { $disabled[$file] = $info; continue; } if($theSettings->linkExist) { if($info['rtorrent.version']>$theSettings->iVersion) { $jResult.="noty('".$file.": '+theUILang.badrTorrentVersion+' '+'".$info['rtorrent.version.readable']."'+'.','error');"; $disabled[$file] = $info; continue; } foreach( $info['rtorrent.external.error'] as $external ) { findRemoteEXE($external,"noty('".$file.": '+theUILang.rTorrentExternalNotFoundError+' ('+'".$external."'+').','error'); thePlugins.get('".$file."').disable();",$remoteRequests); if($external=='php') $phpRequired = true; } foreach( $info['rtorrent.script.error'] as $external ) { $fname = $rootPath.'/plugins/'.$file.'/'.$external; @chmod($fname,$profileMask & 0755); if(!isUserHavePermission($theSettings->uid,$theSettings->gid,$fname,0x0005)) { $jResult.="noty('".$file.": '+theUILang.rTorrentBadScriptPath+' ('+'".$fname."'+').','error');"; $extError = true; } } if($extError) { $disabled[$file] = $info; continue; } foreach( $info['rtorrent.php.error'] as $external ) { $fname = $rootPath.'/plugins/'.$file.'/'.$external; @chmod($fname,$profileMask & 0644); if(!isUserHavePermission($theSettings->uid,$theSettings->gid,$fname,0x0004)) { $jResult.="noty('".$file.": '+theUILang.rTorrentBadPHPScriptPath+' ('+'".$fname."'+').','error');"; $extError = true; } } if($extError) { $disabled[$file] = $info; continue; } if(!isLocalMode()) { if($info["rtorrent.remote"]=="error") { $jResult.="noty('".$file.": '+theUILang.errMustBeInSomeHost,'error');"; $disabled[$file] = $info; continue; } if($do_diagnostic && ($info["rtorrent.remote"]=="warning")) $jResult.="noty('".$file.": '+theUILang.warnMustBeInSomeHost,'error');"; } } if($do_diagnostic) { if($theSettings->linkExist) foreach( $info['rtorrent.external.warning'] as $external ) findRemoteEXE($external,"noty('".$file.": '+theUILang.rTorrentExternalNotFoundWarning+' ('+'".$external."'+').','error');",$remoteRequests); foreach( $info['web.external.warning'] as $external ) if(findEXE($external)==false) $jResult.="noty('".$file.": '+theUILang.webExternalNotFoundWarning+' ('+'".$external."'+').','error');"; foreach( $info['php.extensions.warning'] as $extension ) if(!in_array( $extension, $loadedExtensions )) $jResult.="noty('".$file.": '+theUILang.phpExtensionNotFoundWarning+' ('+'".$extension."'+').','error');"; } $js = "../plugins/".$file."/init.js"; if(!is_readable($js)) $js = NULL; $php = "../plugins/".$file."/init.php"; if(!is_readable($php)) $php = NULL; $init[] = array( "js" => $js, "php" => $php, "info" => $info, "name" => $file ); $names[] = $file; } } } if($phpRequired) { $val = strtoupper(ini_get("register_argc_argv")); if( $val!=='' && $val!='ON' && $val!='1' && $val!='TRUE' ) $jResult.="noty(theUILang.phpParameterUnavailable,'error');"; } usort($init,"pluginsSort"); foreach($init as $plugin) { $jEnd = ''; $pInfo = $plugin["info"]; $deps = array_diff( $pInfo["plugin.dependencies"], $names ); if(count($deps)) { $jResult.="noty('".$plugin["name"].": '+theUILang.dependenceError+' ".implode(",",$deps)."','error');"; $disabled[$plugin["name"]] = $pInfo; continue; } $jResult.="(function () { var plugin = new rPlugin( '".$plugin["name"]."',".$pInfo["plugin.version"]. ",'".$pInfo["plugin.author"]."','".$pInfo["plugin.description"]."',".$pInfo["perms"].",'".$pInfo["plugin.help"]."' );\n"; if($plugin["php"]) require_once( $plugin["php"] ); else $theSettings->registerPlugin($plugin["name"],$pInfo["perms"]); if($plugin["js"]) { $js = file_get_contents($plugin["js"]); if($theSettings->isPluginRegistered($plugin["name"])) $jResult.=$js; else { if(strpos($js,"plugin.loadLang()")!==false) $jResult.="plugin.loadLang();"; } $jResult.="\n"; } $jResult.=$jEnd; $jResult.="\n})();"; } foreach($disabled as $name=>$pInfo) { $jResult.="(function () { var plugin = new rPlugin( '".$name."',".$pInfo["plugin.version"]. ",'".$pInfo["plugin.author"]."','".$pInfo["plugin.description"]."',".$pInfo["perms"].",'".$pInfo["plugin.help"]."' );\n"; $jResult.="plugin.disable(); "; if($pInfo["perms"] & $disabledByUser) $jResult.="plugin.unlaunch(); "; $jResult.="\n})();"; } $jResult.=testRemoteRequests($remoteRequests); $theSettings->store(); } closedir($handle); } cachedEcho($jResult,"application/javascript",true);
    [25.06.2014 18:37:23] Bad response from server: (200 [parsererror,getuisettings]) <?php require_once( 'util.php' ); $s = '{}'; $fname = getSettingsPath()."/uisettings.json"; $fo = fopen($fname, 'r'); if($fo!==false) { if(flock($fo, LOCK_SH)) { $s = @file_get_contents($fname); if($s==false) $s = '{}'; flock($fo, LOCK_UN); } fclose($fo); } cachedEcho($s,"application/json",true);
    For that log I believe I've a problem with permission, or rutorrent plugins.
    Here are my configuration files
    /etc/webapps/rutorrent/conf/config.php
    <?php
    // configuration parameters
    // for snoopy client
    @define('HTTP_USER_AGENT', 'Mozilla/5.0 (Windows NT 6.0; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0', true);
    @define('HTTP_TIME_OUT', 30, true); // in seconds
    @define('HTTP_USE_GZIP', true, true);
    $httpIP = null; // IP string. Or null for any.
    @define('RPC_TIME_OUT', 5, true); // in seconds
    @define('LOG_RPC_CALLS', false, true);
    @define('LOG_RPC_FAULTS', true, true);
    // for php
    @define('PHP_USE_GZIP', false, true);
    @define('PHP_GZIP_LEVEL', 2, true);
    $schedule_rand = 10; // rand for schedulers start, +0..X seconds
    $do_diagnostic = true;
    $log_file = '/tmp/errors.log'; // path to log file (comment or leave blank to disable logging)
    $saveUploadedTorrents = true; // Save uploaded torrents to profile/torrents directory or not
    $overwriteUploadedTorrents = false; // Overwrite existing uploaded torrents in profile/torrents directory or make unique name
    $topDirectory = '/'; // Upper available directory. Absolute path with trail slash.
    $forbidUserSettings = false;
    $scgi_port = 5000;
    $scgi_host = "127.0.0.1";
    // For web->rtorrent link through unix domain socket
    // (scgi_local in rtorrent conf file), change variables
    // above to something like this:
    // $scgi_port = 0;
    // $scgi_host = "unix:///tmp/rpc.socket";
    $XMLRPCMountPoint = "/RPC2"; // DO NOT DELETE THIS LINE!!! DO NOT COMMENT THIS LINE!!!
    $pathToExternals = array(
    "php" => '/usr/bin/php', // Something like /usr/bin/php. If empty, will be found in PATH.
    "curl" => '/usr/bin/curl', // Something like /usr/bin/curl. If empty, will be found in PATH.
    "gzip" => '/usr/bin/gzip', // Something like /usr/bin/gzip. If empty, will be found in PATH.
    "id" => '/usr/bin/id', // Something like /usr/bin/id. If empty, will be found in PATH.
    "stat" => '/usr/bin/stat', // Something like /usr/bin/stat. If empty, will be found in PATH.
    $localhosts = array( // list of local interfaces
    "127.0.0.1",
    "localhost",
    $profilePath = '../share'; // Path to user profiles
    $profileMask = 0777; // Mask for files and directory creation in user profiles.
    // Both Webserver and rtorrent users must have read-write access to it.
    // For example, if Webserver and rtorrent users are in the same group then the value may be 0770.
    $tempDirectory = null; // Temp directory. Absolute path with trail slash. If null, then autodetect will be used.
    ~/.rtorrent.rc
    scgi_port = localhost:5000
    directory = /home/milo/Downloads
    session = /home/milo/.rutorrent/.session
    schedule = watch_directory,5,5,load_start=/home/milo/Downloads/*.torrent
    schedule = low_diskspace,5,60,close_low_diskspace=100M
    port_range = 49152-50000
    check_hash = no
    encryption = allow_incoming,try_outgoing,enable_retry
    dht = auto
    dht_port = 6881
    peer_exchange = yes
    /etc/php/php.ini
    [PHP]
    ; About php.ini ;
    ; PHP's initialization file, generally called php.ini, is responsible for
    ; configuring many of the aspects of PHP's behavior.
    ; PHP attempts to find and load this configuration from a number of locations.
    ; The following is a summary of its search order:
    ; 1. SAPI module specific location.
    ; 2. The PHPRC environment variable. (As of PHP 5.2.0)
    ; 3. A number of predefined registry keys on Windows (As of PHP 5.2.0)
    ; 4. Current working directory (except CLI)
    ; 5. The web server's directory (for SAPI modules), or directory of PHP
    ; (otherwise in Windows)
    ; 6. The directory from the --with-config-file-path compile time option, or the
    ; Windows directory (C:\windows or C:\winnt)
    ; See the PHP docs for more specific information.
    ; http://php.net/configuration.file
    ; The syntax of the file is extremely simple. Whitespace and lines
    ; beginning with a semicolon are silently ignored (as you probably guessed).
    ; Section headers (e.g. [Foo]) are also silently ignored, even though
    ; they might mean something in the future.
    ; Directives following the section heading [PATH=/www/mysite] only
    ; apply to PHP files in the /www/mysite directory. Directives
    ; following the section heading [HOST=www.example.com] only apply to
    ; PHP files served from www.example.com. Directives set in these
    ; special sections cannot be overridden by user-defined INI files or
    ; at runtime. Currently, [PATH=] and [HOST=] sections only work under
    ; CGI/FastCGI.
    ; http://php.net/ini.sections
    ; Directives are specified using the following syntax:
    ; directive = value
    ; Directive names are *case sensitive* - foo=bar is different from FOO=bar.
    ; Directives are variables used to configure PHP or PHP extensions.
    ; There is no name validation. If PHP can't find an expected
    ; directive because it is not set or is mistyped, a default value will be used.
    ; The value can be a string, a number, a PHP constant (e.g. E_ALL or M_PI), one
    ; of the INI constants (On, Off, True, False, Yes, No and None) or an expression
    ; (e.g. E_ALL & ~E_NOTICE), a quoted string ("bar"), or a reference to a
    ; previously set variable or directive (e.g. ${foo})
    ; Expressions in the INI file are limited to bitwise operators and parentheses:
    ; | bitwise OR
    ; ^ bitwise XOR
    ; & bitwise AND
    ; ~ bitwise NOT
    ; ! boolean NOT
    ; Boolean flags can be turned on using the values 1, On, True or Yes.
    ; They can be turned off using the values 0, Off, False or No.
    ; An empty string can be denoted by simply not writing anything after the equal
    ; sign, or by using the None keyword:
    ; foo = ; sets foo to an empty string
    ; foo = None ; sets foo to an empty string
    ; foo = "None" ; sets foo to the string 'None'
    ; If you use constants in your value, and these constants belong to a
    ; dynamically loaded extension (either a PHP extension or a Zend extension),
    ; you may only use these constants *after* the line that loads the extension.
    ; About this file ;
    ; PHP comes packaged with two INI files. One that is recommended to be used
    ; in production environments and one that is recommended to be used in
    ; development environments.
    ; php.ini-production contains settings which hold security, performance and
    ; best practices at its core. But please be aware, these settings may break
    ; compatibility with older or less security conscience applications. We
    ; recommending using the production ini in production and testing environments.
    ; php.ini-development is very similar to its production variant, except it's
    ; much more verbose when it comes to errors. We recommending using the
    ; development version only in development environments as errors shown to
    ; application users can inadvertently leak otherwise secure information.
    ; This is php.ini-production INI file.
    ; Quick Reference ;
    ; The following are all the settings which are different in either the production
    ; or development versions of the INIs with respect to PHP's default behavior.
    ; Please see the actual settings later in the document for more details as to why
    ; we recommend these changes in PHP's behavior.
    ; display_errors
    ; Default Value: On
    ; Development Value: On
    ; Production Value: Off
    ; display_startup_errors
    ; Default Value: Off
    ; Development Value: On
    ; Production Value: Off
    ; error_reporting
    ; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
    ; Development Value: E_ALL
    ; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT
    ; html_errors
    ; Default Value: On
    ; Development Value: On
    ; Production value: On
    ; log_errors
    ; Default Value: Off
    ; Development Value: On
    ; Production Value: On
    ; max_input_time
    ; Default Value: -1 (Unlimited)
    ; Development Value: 60 (60 seconds)
    ; Production Value: 60 (60 seconds)
    ; output_buffering
    ; Default Value: Off
    ; Development Value: 4096
    ; Production Value: 4096
    ; register_argc_argv
    ; Default Value: On
    ; Development Value: Off
    ; Production Value: Off
    ; request_order
    ; Default Value: None
    ; Development Value: "GP"
    ; Production Value: "GP"
    ; session.gc_divisor
    ; Default Value: 100
    ; Development Value: 1000
    ; Production Value: 1000
    ; session.hash_bits_per_character
    ; Default Value: 4
    ; Development Value: 5
    ; Production Value: 5
    ; short_open_tag
    ; Default Value: On
    ; Development Value: Off
    ; Production Value: Off
    ; track_errors
    ; Default Value: Off
    ; Development Value: On
    ; Production Value: Off
    ; url_rewriter.tags
    ; Default Value: "a=href,area=href,frame=src,form=,fieldset="
    ; Development Value: "a=href,area=href,frame=src,input=src,form=fakeentry"
    ; Production Value: "a=href,area=href,frame=src,input=src,form=fakeentry"
    ; variables_order
    ; Default Value: "EGPCS"
    ; Development Value: "GPCS"
    ; Production Value: "GPCS"
    ; php.ini Options ;
    ; Name for user-defined php.ini (.htaccess) files. Default is ".user.ini"
    ;user_ini.filename = ".user.ini"
    ; To disable this feature set this option to empty value
    ;user_ini.filename =
    ; TTL for user-defined php.ini files (time-to-live) in seconds. Default is 300 seconds (5 minutes)
    ;user_ini.cache_ttl = 300
    ; Language Options ;
    ; Enable the PHP scripting language engine under Apache.
    ; http://php.net/engine
    engine = On
    ; This directive determines whether or not PHP will recognize code between
    ; <? and ?> tags as PHP source which should be processed as such. It is
    ; generally recommended that <?php and ?> should be used and that this feature
    ; should be disabled, as enabling it may result in issues when generating XML
    ; documents, however this remains supported for backward compatibility reasons.
    ; Note that this directive does not control the <?= shorthand tag, which can be
    ; used regardless of this directive.
    ; Default Value: On
    ; Development Value: Off
    ; Production Value: Off
    ; http://php.net/short-open-tag
    short_open_tag = Off
    ; Allow ASP-style <% %> tags.
    ; http://php.net/asp-tags
    asp_tags = Off
    ; The number of significant digits displayed in floating point numbers.
    ; http://php.net/precision
    precision = 14
    ; Output buffering is a mechanism for controlling how much output data
    ; (excluding headers and cookies) PHP should keep internally before pushing that
    ; data to the client. If your application's output exceeds this setting, PHP
    ; will send that data in chunks of roughly the size you specify.
    ; Turning on this setting and managing its maximum buffer size can yield some
    ; interesting side-effects depending on your application and web server.
    ; You may be able to send headers and cookies after you've already sent output
    ; through print or echo. You also may see performance benefits if your server is
    ; emitting less packets due to buffered output versus PHP streaming the output
    ; as it gets it. On production servers, 4096 bytes is a good setting for performance
    ; reasons.
    ; Note: Output buffering can also be controlled via Output Buffering Control
    ; functions.
    ; Possible Values:
    ; On = Enabled and buffer is unlimited. (Use with caution)
    ; Off = Disabled
    ; Integer = Enables the buffer and sets its maximum size in bytes.
    ; Note: This directive is hardcoded to Off for the CLI SAPI
    ; Default Value: Off
    ; Development Value: 4096
    ; Production Value: 4096
    ; http://php.net/output-buffering
    output_buffering = 4096
    ; You can redirect all of the output of your scripts to a function. For
    ; example, if you set output_handler to "mb_output_handler", character
    ; encoding will be transparently converted to the specified encoding.
    ; Setting any output handler automatically turns on output buffering.
    ; Note: People who wrote portable scripts should not depend on this ini
    ; directive. Instead, explicitly set the output handler using ob_start().
    ; Using this ini directive may cause problems unless you know what script
    ; is doing.
    ; Note: You cannot use both "mb_output_handler" with "ob_iconv_handler"
    ; and you cannot use both "ob_gzhandler" and "zlib.output_compression".
    ; Note: output_handler must be empty if this is set 'On' !!!!
    ; Instead you must use zlib.output_handler.
    ; http://php.net/output-handler
    ;output_handler =
    ; Transparent output compression using the zlib library
    ; Valid values for this option are 'off', 'on', or a specific buffer size
    ; to be used for compression (default is 4KB)
    ; Note: Resulting chunk size may vary due to nature of compression. PHP
    ; outputs chunks that are few hundreds bytes each as a result of
    ; compression. If you prefer a larger chunk size for better
    ; performance, enable output_buffering in addition.
    ; Note: You need to use zlib.output_handler instead of the standard
    ; output_handler, or otherwise the output will be corrupted.
    ; http://php.net/zlib.output-compression
    zlib.output_compression = Off
    ; http://php.net/zlib.output-compression-level
    ;zlib.output_compression_level = -1
    ; You cannot specify additional output handlers if zlib.output_compression
    ; is activated here. This setting does the same as output_handler but in
    ; a different order.
    ; http://php.net/zlib.output-handler
    ;zlib.output_handler =
    ; Implicit flush tells PHP to tell the output layer to flush itself
    ; automatically after every output block. This is equivalent to calling the
    ; PHP function flush() after each and every call to print() or echo() and each
    ; and every HTML block. Turning this option on has serious performance
    ; implications and is generally recommended for debugging purposes only.
    ; http://php.net/implicit-flush
    ; Note: This directive is hardcoded to On for the CLI SAPI
    implicit_flush = Off
    ; The unserialize callback function will be called (with the undefined class'
    ; name as parameter), if the unserializer finds an undefined class
    ; which should be instantiated. A warning appears if the specified function is
    ; not defined, or if the function doesn't include/implement the missing class.
    ; So only set this entry, if you really want to implement such a
    ; callback-function.
    unserialize_callback_func =
    ; When floats & doubles are serialized store serialize_precision significant
    ; digits after the floating point. The default value ensures that when floats
    ; are decoded with unserialize, the data will remain the same.
    serialize_precision = 17
    ; open_basedir, if set, limits all file operations to the defined directory
    ; and below. This directive makes most sense if used in a per-directory
    ; or per-virtualhost web server configuration file. This directive is
    ; *NOT* affected by whether Safe Mode is turned On or Off.
    ; http://php.net/open-basedir
    open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/etc/webapps/rutorrent/conf/:/usr/share/webapps/rutorrent/php/:/usr/share/webapps/rutorrent/
    ; This directive allows you to disable certain functions for security reasons.
    ; It receives a comma-delimited list of function names. This directive is
    ; *NOT* affected by whether Safe Mode is turned On or Off.
    ; http://php.net/disable-functions
    disable_functions =
    ; This directive allows you to disable certain classes for security reasons.
    ; It receives a comma-delimited list of class names. This directive is
    ; *NOT* affected by whether Safe Mode is turned On or Off.
    ; http://php.net/disable-classes
    disable_classes =
    ; Colors for Syntax Highlighting mode. Anything that's acceptable in
    ; <span style="color: ???????"> would work.
    ; http://php.net/syntax-highlighting
    ;highlight.string = #DD0000
    ;highlight.comment = #FF9900
    ;highlight.keyword = #007700
    ;highlight.default = #0000BB
    ;highlight.html = #000000
    ; If enabled, the request will be allowed to complete even if the user aborts
    ; the request. Consider enabling it if executing long requests, which may end up
    ; being interrupted by the user or a browser timing out. PHP's default behavior
    ; is to disable this feature.
    ; http://php.net/ignore-user-abort
    ;ignore_user_abort = On
    ; Determines the size of the realpath cache to be used by PHP. This value should
    ; be increased on systems where PHP opens many files to reflect the quantity of
    ; the file operations performed.
    ; http://php.net/realpath-cache-size
    ;realpath_cache_size = 16k
    ; Duration of time, in seconds for which to cache realpath information for a given
    ; file or directory. For systems with rarely changing files, consider increasing this
    ; value.
    ; http://php.net/realpath-cache-ttl
    ;realpath_cache_ttl = 120
    ; Enables or disables the circular reference collector.
    ; http://php.net/zend.enable-gc
    zend.enable_gc = On
    ; If enabled, scripts may be written in encodings that are incompatible with
    ; the scanner. CP936, Big5, CP949 and Shift_JIS are the examples of such
    ; encodings. To use this feature, mbstring extension must be enabled.
    ; Default: Off
    ;zend.multibyte = Off
    ; Allows to set the default encoding for the scripts. This value will be used
    ; unless "declare(encoding=...)" directive appears at the top of the script.
    ; Only affects if zend.multibyte is set.
    ; Default: ""
    ;zend.script_encoding =
    ; Miscellaneous ;
    ; Decides whether PHP may expose the fact that it is installed on the server
    ; (e.g. by adding its signature to the Web server header). It is no security
    ; threat in any way, but it makes it possible to determine whether you use PHP
    ; on your server or not.
    ; http://php.net/expose-php
    expose_php = On
    ; Resource Limits ;
    ; Maximum execution time of each script, in seconds
    ; http://php.net/max-execution-time
    ; Note: This directive is hardcoded to 0 for the CLI SAPI
    max_execution_time = 30
    ; Maximum amount of time each script may spend parsing request data. It's a good
    ; idea to limit this time on productions servers in order to eliminate unexpectedly
    ; long running scripts.
    ; Note: This directive is hardcoded to -1 for the CLI SAPI
    ; Default Value: -1 (Unlimited)
    ; Development Value: 60 (60 seconds)
    ; Production Value: 60 (60 seconds)
    ; http://php.net/max-input-time
    max_input_time = 60
    ; Maximum input variable nesting level
    ; http://php.net/max-input-nesting-level
    ;max_input_nesting_level = 64
    ; How many GET/POST/COOKIE input variables may be accepted
    ; max_input_vars = 1000
    ; Maximum amount of memory a script may consume (128MB)
    ; http://php.net/memory-limit
    memory_limit = 128M
    ; Error handling and logging ;
    ; This directive informs PHP of which errors, warnings and notices you would like
    ; it to take action for. The recommended way of setting values for this
    ; directive is through the use of the error level constants and bitwise
    ; operators. The error level constants are below here for convenience as well as
    ; some common settings and their meanings.
    ; By default, PHP is set to take action on all errors, notices and warnings EXCEPT
    ; those related to E_NOTICE and E_STRICT, which together cover best practices and
    ; recommended coding standards in PHP. For performance reasons, this is the
    ; recommend error reporting setting. Your production server shouldn't be wasting
    ; resources complaining about best practices and coding standards. That's what
    ; development servers and development settings are for.
    ; Note: The php.ini-development file has this setting as E_ALL. This
    ; means it pretty much reports everything which is exactly what you want during
    ; development and early testing.
    ; Error Level Constants:
    ; E_ALL - All errors and warnings (includes E_STRICT as of PHP 5.4.0)
    ; E_ERROR - fatal run-time errors
    ; E_RECOVERABLE_ERROR - almost fatal run-time errors
    ; E_WARNING - run-time warnings (non-fatal errors)
    ; E_PARSE - compile-time parse errors
    ; E_NOTICE - run-time notices (these are warnings which often result
    ; from a bug in your code, but it's possible that it was
    ; intentional (e.g., using an uninitialized variable and
    ; relying on the fact it's automatically initialized to an
    ; empty string)
    ; E_STRICT - run-time notices, enable to have PHP suggest changes
    ; to your code which will ensure the best interoperability
    ; and forward compatibility of your code
    ; E_CORE_ERROR - fatal errors that occur during PHP's initial startup
    ; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's
    ; initial startup
    ; E_COMPILE_ERROR - fatal compile-time errors
    ; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
    ; E_USER_ERROR - user-generated error message
    ; E_USER_WARNING - user-generated warning message
    ; E_USER_NOTICE - user-generated notice message
    ; E_DEPRECATED - warn about code that will not work in future versions
    ; of PHP
    ; E_USER_DEPRECATED - user-generated deprecation warnings
    ; Common Values:
    ; E_ALL (Show all errors, warnings and notices including coding standards.)
    ; E_ALL & ~E_NOTICE (Show all errors, except for notices)
    ; E_ALL & ~E_NOTICE & ~E_STRICT (Show all errors, except for notices and coding standards warnings.)
    ; E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Show only errors)
    ; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
    ; Development Value: E_ALL
    ; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT
    ; http://php.net/error-reporting
    error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
    ; This directive controls whether or not and where PHP will output errors,
    ; notices and warnings too. Error output is very useful during development, but
    ; it could be very dangerous in production environments. Depending on the code
    ; which is triggering the error, sensitive information could potentially leak
    ; out of your application such as database usernames and passwords or worse.
    ; It's recommended that errors be logged on production servers rather than
    ; having the errors sent to STDOUT.
    ; Possible Values:
    ; Off = Do not display any errors
    ; stderr = Display errors to STDERR (affects only CGI/CLI binaries!)
    ; On or stdout = Display errors to STDOUT
    ; Default Value: On
    ; Development Value: On
    ; Production Value: Off
    ; http://php.net/display-errors
    display_errors = Off
    ; The display of errors which occur during PHP's startup sequence are handled
    ; separately from display_errors. PHP's default behavior is to suppress those
    ; errors from clients. Turning the display of startup errors on can be useful in
    ; debugging configuration problems. But, it's strongly recommended that you
    ; leave this setting off on production servers.
    ; Default Value: Off
    ; Development Value: On
    ; Production Value: Off
    ; http://php.net/display-startup-errors
    display_startup_errors = Off
    ; Besides displaying errors, PHP can also log errors to locations such as a
    ; server-specific log, STDERR, or a location specified by the error_log
    ; directive found below. While errors should not be displayed on productions
    ; servers they should still be monitored and logging is a great way to do that.
    ; Default Value: Off
    ; Development Value: On
    ; Production Value: On
    ; http://php.net/log-errors
    log_errors = On
    ; Set maximum length of log_errors. In error_log information about the source is
    ; added. The default is 1024 and 0 allows to not apply any maximum length at all.
    ; http://php.net/log-errors-max-len
    log_errors_max_len = 1024
    ; Do not log repeated messages. Repeated errors must occur in same file on same
    ; line unless ignore_repeated_source is set true.
    ; http://php.net/ignore-repeated-errors
    ignore_repeated_errors = Off
    ; Ignore source of message when ignoring repeated messages. When this setting
    ; is On you will not log errors with repeated messages from different files or
    ; source lines.
    ; http://php.net/ignore-repeated-source
    ignore_repeated_source = Off
    ; If this parameter is set to Off, then memory leaks will not be shown (on
    ; stdout or in the log). This has only effect in a debug compile, and if
    ; error reporting includes E_WARNING in the allowed list
    ; http://php.net/report-memleaks
    report_memleaks = On
    ; This setting is on by default.
    ;report_zend_debug = 0
    ; Store the last error/warning message in $php_errormsg (boolean). Setting this value
    ; to On can assist in debugging and is appropriate for development servers. It should
    ; however be disabled on production servers.
    ; Default Value: Off
    ; Development Value: On
    ; Production Value: Off
    ; http://php.net/track-errors
    track_errors = Off
    ; Turn off normal error reporting and emit XML-RPC error XML
    ; http://php.net/xmlrpc-errors
    ;xmlrpc_errors = 0
    ; An XML-RPC faultCode
    ;xmlrpc_error_number = 0
    ; When PHP displays or logs an error, it has the capability of formatting the
    ; error message as HTML for easier reading. This directive controls whether
    ; the error message is formatted as HTML or not.
    ; Note: This directive is hardcoded to Off for the CLI SAPI
    ; Default Value: On
    ; Development Value: On
    ; Production value: On
    ; http://php.net/html-errors
    html_errors = On
    ; If html_errors is set to On *and* docref_root is not empty, then PHP
    ; produces clickable error messages that direct to a page describing the error
    ; or function causing the error in detail.
    ; You can download a copy of the PHP manual from http://php.net/docs
    ; and change docref_root to the base URL of your local copy including the
    ; leading '/'. You must also specify the file extension being used including
    ; the dot. PHP's default behavior is to leave these settings empty, in which
    ; case no links to documentation are generated.
    ; Note: Never use this feature for production boxes.
    ; http://php.net/docref-root
    ; Examples
    ;docref_root = "/phpmanual/"
    ; http://php.net/docref-ext
    ;docref_ext = .html
    ; String to output before an error message. PHP's default behavior is to leave
    ; this setting blank.
    ; http://php.net/error-prepend-string
    ; Example:
    ;error_prepend_string = "<span style='color: #ff0000'>"
    ; String to output after an error message. PHP's default behavior is to leave
    ; this setting blank.
    ; http://php.net/error-append-string
    ; Example:
    ;error_append_string = "</span>"
    ; Log errors to specified file. PHP's default behavior is to leave this value
    ; empty.
    ; http://php.net/error-log
    ; Example:
    ;error_log = php_errors.log
    ; Log errors to syslog (Event Log on Windows).
    ;error_log = syslog
    ;windows.show_crt_warning
    ; Default value: 0
    ; Development value: 0
    ; Production value: 0
    ; Data Handling ;
    ; The separator used in PHP generated URLs to separate arguments.
    ; PHP's default setting is "&".
    ; http://php.net/arg-separator.output
    ; Example:
    ;arg_separator.output = "&amp;"
    ; List of separator(s) used by PHP to parse input URLs into variables.
    ; PHP's default setting is "&".
    ; NOTE: Every character in this directive is considered as separator!
    ; http://php.net/arg-separator.input
    ; Example:
    ;arg_separator.input = ";&"
    ; This directive determines which super global arrays are registered when PHP
    ; starts up. G,P,C,E & S are abbreviations for the following respective super
    ; globals: GET, POST, COOKIE, ENV and SERVER. There is a performance penalty
    ; paid for the registration of these arrays and because ENV is not as commonly
    ; used as the others, ENV is not recommended on productions servers. You
    ; can still get access to the environment variables through getenv() should you
    ; need to.
    ; Default Value: "EGPCS"
    ; Development Value: "GPCS"
    ; Production Value: "GPCS";
    ; http://php.net/variables-order
    variables_order = "GPCS"
    ; This directive determines which super global data (G,P,C,E & S) should
    ; be registered into the super global array REQUEST. If so, it also determines
    ; the order in which that data is registered. The values for this directive are
    ; specified in the same manner as the variables_order directive, EXCEPT one.
    ; Leaving this value empty will cause PHP to use the value set in the
    ; variables_order directive. It does not mean it will leave the super globals
    ; array REQUEST empty.
    ; Default Value: None
    ; Development Value: "GP"
    ; Production Value: "GP"
    ; http://php.net/request-order
    request_order = "GP"
    ; This directive determines whether PHP registers $argv & $argc each time it
    ; runs. $argv contains an array of all the arguments passed to PHP when a script
    ; is invoked. $argc contains an integer representing the number of arguments
    ; that were passed when the script was invoked. These arrays are extremely
    ; useful when running scripts from the command line. When this directive is
    ; enabled, registering these variables consumes CPU cycles and memory each time
    ; a script is executed. For performance reasons, this feature should be disabled
    ; on production servers.
    ; Note: This directive is hardcoded to On for the CLI SAPI
    ; Default Value: On
    ; Development Value: Off
    ; Production Value: Off
    ; http://php.net/register-argc-argv
    register_argc_argv = Off
    ; When enabled, the ENV, REQUEST and SERVER variables are created when they're
    ; first used (Just In Time) instead of when the script starts. If these
    ; variables are not used within a script, having this directive on will result
    ; in a performance gain. The PHP directive register_argc_argv must be disabled
    ; for this directive to have any affect.
    ; http://php.net/auto-globals-jit
    auto_globals_jit = On
    ; Whether PHP will read the POST data.
    ; This option is enabled by default.
    ; Most likely, you won't want to disable this option globally. It causes $_POST
    ; and $_FILES to always be empty; the only way you will be able to read the
    ; POST data will be through the php://input stream wrapper. This can be useful
    ; to proxy requests or to process the POST data in a memory efficient fashion.
    ; http://php.net/enable-post-data-reading
    ;enable_post_data_reading = Off
    ; Maximum size of POST data that PHP will accept.
    ; Its value may be 0 to disable the limit. It is ignored if POST data reading
    ; is disabled through enable_post_data_reading.
    ; http://php.net/post-max-size
    post_max_size = 8M
    ; Automatically add files before PHP document.
    ; http://php.net/auto-prepend-file
    auto_prepend_file =
    ; Automatically add files after PHP document.
    ; http://php.net/auto-append-file
    auto_append_file =
    ; By default, PHP will output a character encoding using
    ; the Content-type: header. To disable sending of the charset, simply
    ; set it to be empty.
    ; PHP's built-in default is text/html
    ; http://php.net/default-mimetype
    default_mimetype = "text/html"
    ; PHP's default character set is set to empty.
    ; http://php.net/default-charset
    ;default_charset = "UTF-8"
    ; Always populate the $HTTP_RAW_POST_DATA variable. PHP's default behavior is
    ; to disable this feature. If post reading is disabled through
    ; enable_post_data_reading, $HTTP_RAW_POST_DATA is *NOT* populated.
    ; http://php.net/always-populate-raw-post-data
    ;always_populate_raw_post_data = On
    ; Paths and Directories ;
    ; UNIX: "/path1:/path2"
    include_path = ".:/usr/share/pear"
    ; Windows: "\path1;\path2"
    ;include_path = ".;c:\php\includes"
    ; PHP's default setting for include_path is ".;/path/to/php/pear"
    ; http://php.net/include-path
    ; The root of the PHP pages, used only if nonempty.
    ; if PHP was not compiled with FORCE_REDIRECT, you SHOULD set doc_root
    ; if you are running php as a CGI under any web server (other than IIS)
    ; see documentation for security issues. The alternate is to use the
    ; cgi.force_redirect configuration below
    ; http://php.net/doc-root
    doc_root =
    ; The directory under which PHP opens the script using /~username used only
    ; if nonempty.
    ; http://php.net/user-dir
    user_dir =
    ; Directory in which the loadable extensions (modules) reside.
    ; http://php.net/extension-dir
    extension_dir = "/usr/lib/php/modules/"
    ; On windows:
    ; extension_dir = "ext"
    ; Directory where the temporary files should be placed.
    ; Defaults to the system default (see sys_get_temp_dir)
    ; sys_temp_dir = "/tmp"
    ; Whether or not to enable the dl() function. The dl() function does NOT work
    ; properly in multithreaded servers, such as IIS or Zeus, and is automatically
    ; disabled on them.
    ; http://php.net/enable-dl
    enable_dl = Off
    ; cgi.force_redirect is necessary to provide security running PHP as a CGI under
    ; most web servers. Left undefined, PHP turns this on by default. You can
    ; turn it off here AT YOUR OWN RISK
    ; **You CAN safely turn this off for IIS, in fact, you MUST.**
    ; http://php.net/cgi.force-redirect
    ;cgi.force_redirect = 1
    ; if cgi.nph is enabled it will force cgi to always sent Status: 200 with
    ; every request. PHP's default behavior is to disable this feature.
    ;cgi.nph = 1
    ; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape
    ; (iPlanet) web servers, you MAY need to set an environment variable name that PHP
    ; will look for to know it is OK to continue execution. Setting this variable MAY
    ; cause security issues, KNOW WHAT YOU ARE DOING FIRST.
    ; http://php.net/cgi.redirect-status-env
    ;cgi.redirect_status_env =
    ; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's
    ; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
    ; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting
    ; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting
    ; of zero causes PHP to behave as before. Default is 1. You should fix your scripts
    ; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
    ; http://php.net/cgi.fix-pathinfo
    ;cgi.fix_pathinfo=1
    ; FastCGI under IIS (on WINNT based OS) supports the ability to impersonate
    ; security tokens of the calling client. This allows IIS to define the
    ; security context that the request runs under. mod_fastcgi under Apache
    ; does not currently support this feature (03/17/2002)
    ; Set to 1 if running under IIS. Default is zero.
    ; http://php.net/fastcgi.impersonate
    ;fastcgi.impersonate = 1
    ; Disable logging through FastCGI connection. PHP's default behavior is to enable
    ; this feature.
    ;fastcgi.logging = 0
    ; cgi.rfc2616_headers configuration option tells PHP what type of headers to
    ; use when sending HTTP response code. If it's set 0 PHP sends Status: header that
    ; is supported by Apache. When this option is set to 1 PHP will send
    ; RFC2616 compliant header.
    ; Default is zero.
    ; http://php.net/cgi.rfc2616-headers
    ;cgi.rfc2616_headers = 0
    ; File Uploads ;
    ; Whether to allow HTTP file uploads.
    ; http://php.net/file-uploads
    file_uploads = On
    ; Temporary directory for HTTP uploaded files (will use system default if not
    ; specified).
    ; http://php.net/upload-tmp-dir
    ;upload_tmp_dir =
    ; Maximum allowed size for uploaded files.
    ; http://php.net/upload-max-filesize
    upload_max_filesize = 2M
    ; Maximum number of files that can be uploaded via a single request
    max_file_uploads = 20
    ; Fopen wrappers ;
    ; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
    ; http://php.net/allow-url-fopen
    allow_url_fopen = On
    ; Whether to allow include/require to open URLs (like http:// or ftp://) as files.
    ; http://php.net/allow-url-include
    allow_url_include = Off
    ; Define the anonymous ftp password (your email address). PHP's default setting
    ; for this is empty.
    ; http://php.net/from
    ;from="[email protected]"
    ; Define the User-Agent string. PHP's default setting for this is empty.
    ; http://php.net/user-agent
    ;user_agent="PHP"
    ; Default timeout for socket based streams (seconds)
    ; http://php.net/default-socket-timeout
    default_socket_timeout = 60
    ; If your scripts have to deal with files from Macintosh systems,
    ; or you are running on a Mac and need to deal with files from
    ; unix or win32 systems, setting this flag will cause PHP to
    ; automatically detect the EOL character in those files so that
    ; fgets() and file() will work regardless of the source of the file.
    ; http://php.net/auto-detect-line-endings
    ;auto_detect_line_endings = Off
    ; Dynamic Extensions ;
    ; If you wish to have an extension loaded automatically, use the following
    ; syntax:
    ; extension=modulename.extension
    ; For example, on Windows:
    ; extension=msql.dll
    ; ... or under UNIX:
    ; extension=msql.so
    ; ... or with a path:
    ; extension=/path/to/extension/msql.so
    ; If you only provide the name of the extension, PHP will look for it in its
    ; default extension directory.
    ;extension=bcmath.so
    ;extension=bz2.so
    ;extension=calendar.so
    extension=curl.so
    ;extension=dba.so
    ;extension=enchant.so
    ;extension=exif.so
    ;extension=ftp.so
    ;extension=gd.so
    extension=gettext.so
    ;extension=gmp.so
    ;extension=iconv.so
    ;extension=imap.so
    ;extension=intl.so
    ;extension=ldap.so
    ;extension=mcrypt.so
    ;extension=mssql.so
    ;extension=mysqli.so
    ;extension=mysql.so
    ;extension=odbc.so
    ;zend_extension=opcache.so
    ;extension=openssl.so
    ;extension=pdo_mysql.so
    ;extension=pdo_odbc.so
    ;extension=pdo_pgsql.so
    ;extension=pdo_sqlite.so
    ;extension=pgsql.so
    ;extension=phar.so
    ;extension=posix.so
    ;extension=pspell.so
    ;extension=shmop.so
    ;extension=snmp.so
    ;extension=soap.so
    ;extension=sockets.so
    ;extension=sqlite3.so
    ;extension=sysvmsg.so
    ;extension=sysvsem.so
    ;extension=sysvshm.so
    ;extension=tidy.so
    ;extension=xmlrpc.so
    ;extension=xsl.so
    ;extension=zip.so
    ; Module Settings ;
    [CLI Server]
    ; Whether the CLI web server uses ANSI color coding in its terminal output.
    cli_server.color = On
    [Date]
    ; Defines the default timezone used by the date functions
    ; http://php.net/date.timezone
    ;date.timezone =
    ; http://php.net/date.default-latitude
    ;date.default_latitude = 31.7667
    ; http://php.net/date.default-longitude
    ;date.default_longitude = 35.2333
    ; http://php.net/date.sunrise-zenith
    ;date.sunrise_zenith = 90.583333
    ; http://php.net/date.sunset-zenith
    ;date.sunset_zenith = 90.583333
    [filter]
    ; http://php.net/filter.default
    ;filter.default = unsafe_raw
    ; http://php.net/filter.default-flags
    ;filter.default_flags =
    [iconv]
    ;iconv.input_encoding = ISO-8859-1
    ;iconv.internal_encoding = ISO-8859-1
    ;iconv.output_encoding = ISO-8859-1
    [intl]
    ;intl.default_locale =
    ; This directive allows you to produce PHP errors when some error
    ; happens within intl functions. The value is the level of the error produced.
    ; Default is 0, which does not produce any errors.
    ;intl.error_level = E_WARNING
    [sqlite]
    ; http://php.net/sqlite.assoc-case
    ;sqlite.assoc_case = 0
    [sqlite3]
    ;sqlite3.extension_dir =
    [Pcre]
    ;PCRE library backtracking limit.
    ; http://php.net/pcre.backtrack-limit
    ;pcre.backtrack_limit=100000
    ;PCRE library recursion limit.
    ;Please note that if you set this value to a high number you may consume all
    ;the available process stack and eventually crash PHP (due to reaching the
    ;stack size limit imposed by the Operating System).
    ; http://php.net/pcre.recursion-limit
    ;pcre.recursion_limit=100000
    [Pdo]
    ; Whether to pool ODBC connections. Can be one of "strict", "relaxed" or "off"
    ; http://php.net/pdo-odbc.connection-pooling
    ;pdo_odbc.connection_pooling=strict
    ;pdo_odbc.db2_instance_name
    [Pdo_mysql]
    ; If mysqlnd is used: Number of cache slots for the internal result set cache
    ; http://php.net/pdo_mysql.cache_size
    pdo_mysql.cache_size = 2000
    ; Default socket name for local MySQL connects. If empty, uses the built-in
    ; MySQL defaults.
    ; http://php.net/pdo_mysql.default-socket
    pdo_mysql.default_socket=
    [Phar]
    ; http://php.net/phar.readonly
    ;phar.readonly = On
    ; http://php.net/phar.require-hash
    ;phar.require_hash = On
    ;phar.cache_list =
    [mail function]
    ; For Win32 only.
    ; http://php.net/smtp
    SMTP = localhost
    ; http://php.net/smtp-port
    smtp_port = 25
    ; For Win32 only.
    ; http://php.net/sendmail-from
    ;sendmail_from = [email protected]
    ; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
    ; http://php.net/sendmail-path
    ;sendmail_path =
    ; Force the addition of the specified parameters to be passed as extra parameters
    ; to the sendmail binary. These parameters will always replace the value of
    ; the 5th parameter to mail(), even in safe mode.
    ;mail.force_extra_parameters =
    ; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
    mail.add_x_header = On
    ; The path to a log file that will log all mail() calls. Log entries include
    ; the full path of the script, line number, To address and headers.
    ;mail.log =
    ; Log mail to syslog (Event Log on Windows).
    ;mail.log = syslog
    [SQL]
    ; http://php.net/sql.safe-mode
    sql.safe_mode = Off
    [ODBC]
    ; http://php.net/odbc.default-db
    ;odbc.default_db = Not yet implemented
    ; http://php.net/odbc.default-user
    ;odbc.default_user = Not yet implemented
    ; http://php.net/odbc.default-pw
    ;odbc.default_pw = Not yet implemented
    ; Controls the ODBC cursor model.
    ; Default: SQL_CURSOR_STATIC (default).
    ;odbc.default_cursortype
    ; Allow or prevent persistent links.
    ; http://php.net/odbc.allow-persistent
    odbc.allow_persistent = On
    ; Check that a connection is still valid before reuse.
    ; http://php.net/odbc.check-persistent
    odbc.check_persistent = On
    ; Maximum number of persistent links. -1 means no limit.
    ; http://php.net/odbc.max-persistent
    odbc.max_persistent = -1
    ; Maximum number of links (persistent + non-persistent). -1 means no limit.
    ; http://php.net/odbc.max-links
    odbc.max_links = -1
    ; Handling of LONG fields. Returns number of bytes to variables. 0 means
    ; passthru.
    ; http://php.net/odbc.defaultlrl
    odbc.defaultlrl = 4096
    ; Handling of binary data. 0 means passthru, 1 return as is, 2 convert to char.
    ; See the documentation on odbc_binmode and odbc_longreadlen for an explanation
    ; of odbc.defaultlrl and odbc.defaultbinmode
    ; http://php.net/odbc.defaultbinmode
    odbc.defaultbinmode = 1
    ;birdstep.max_links = -1
    [Interbase]
    ; Allow or prevent persistent links.
    ibase.allow_persistent = 1
    ; Maximum number of persistent links. -1 means no limit.
    ibase.max_persistent = -1
    ; Maximum number of links (persistent + non-persistent). -1 means no limit.
    ibase.max_links = -1
    ; Default database name for ibase_connect().
    ;ibase.default_db =
    ; Default username for ibase_connect().
    ;ibase.default_user =
    ; Default password for ibase_connect().
    ;ibase.default_password =
    ; Default charset for ibase_connect().
    ;ibase.default_charset =
    ; Default timestamp format.
    ibase.timestampformat = "%Y-%m-%d %H:%M:%S"
    ; Default date format.
    ibase.dateformat = "%Y-%m-%d"
    ; Default time format.
    ibase.timeformat = "%H:%M:%S"
    [MySQL]
    ; Allow accessing, from PHP's perspective, local files with LOAD DATA statements
    ; http://php.net/mysql.allow_local_infile
    mysql.allow_local_infile = On
    ; Allow or prevent persistent links.
    ; http://php.net/mysql.allow-persistent
    mysql.allow_persistent = On
    ; If mysqlnd is used: Number of cache slots for the internal result set cache
    ; http://php.net/mysql.cache_size
    mysql.cache_size = 2000
    ; Maximum number of persistent links. -1 means no limit.
    ; http://php.net/mysql.max-persistent
    mysql.max_persistent = -1
    ; Maximum number of links (persistent + non-persistent). -1 means no limit.
    ; http://php.net/mysql.max-links
    mysql.max_links = -1
    ; Default port number for mysql_connect(). If unset, mysql_connect() will use
    ; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the
    ; compile-time value defined MYSQL_PORT (in that order). Win32 will only look
    ; at MYSQL_PORT.
    ; http://php.net/mysql.default-port
    mysql.default_port =
    ; Default socket name for local MySQL connects. If empty, uses the built-in
    ; MySQL defaults.
    ; http://php.net/mysql.default-socket
    mysql.default_socket =
    ; Default host for mysql_connect() (doesn't apply in safe mode).
    ; http://php.net/mysql.default-host
    mysql.default_host =
    ; Default user for mysql_connect() (doesn't apply in safe mode).
    ; http://php.net/mysql.default-user
    mysql.default_user =
    ; Default password for mysql_connect() (doesn't apply in safe mode).
    ; Note that this is generally a *bad* idea to store passwords in this file.
    ; *Any* user with PHP access can run 'echo get_cfg_var("mysql.default_password")
    ; and reveal this password! And of course, any users with read access to this
    ; file will be able to reveal the password as well.
    ; http://php.net/mysql.default-password
    mysql.default_password =
    ; Maximum time (in seconds) for connect timeout. -1 means no limit
    ; http://php.net/mysql.connect-timeout
    mysql.connect_timeout = 60
    ; Trace mode. When trace_mode is active (=On), warnings for table/index scans and
    ; SQL-Errors will be displayed.
    ; http://php.net/mysql.trace-mode
    mysql.trace_mode = Off
    [MySQLi]
    ; Maximum number of persistent links. -1 means no limit.
    ; http://php.net/mysqli.max-persistent
    mysqli.max_persistent = -1
    ; Allow accessing, from PHP's perspective, local files with LOAD DATA statements
    ; http://php.net/mysqli.allow_local_infile
    ;mysqli.allow_local_infile = On
    ; Allow or prevent persistent links.
    ; http://php.net/mysqli.allow-persistent
    mysqli.allow_persistent = On
    ; Maximum number of links. -1 means no limit.
    ; http://php.net/mysqli.max-links
    mysqli.max_links = -1
    ; If mysqlnd is used: Number of cache slots for the internal result set cache
    ; http://php.net/mysqli.cache_size
    mysqli.cache_size = 2000
    ; Default port number for mysqli_connect(). If unset, mysqli_connect() will use
    ; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the
    ; compile-time value defined MYSQL_PORT (in that order). Win32 will only look
    ; at MYSQL_PORT.
    ; http://php.net/mysqli.default-port
    mysqli.default_port = 3306
    ; Default socket name for local MySQL connects. If empty, uses the built-in
    ; MySQL defaults.
    ; http://php.net/mysqli.default-socket
    mysqli.default_socket =
    ; Default host for mysql_connect() (doesn't apply in safe mode).
    ; http://php.net/mysqli.default-host
    mysqli.default_host =
    ; Default user for mysql_connect() (doesn't apply in safe mode).
    ; http://php.net/mysqli.default-user
    mysqli.default_user =
    ; Default password for mysqli_connect() (doesn't apply in safe mode).
    ; Note that this is generally a *bad* idea to store passwords in this file.
    ; *Any* user with PHP access can run 'echo get_cfg_var("mysqli.default_pw")
    ; and reveal this password! And of course, any users with read access to this
    ; file will be able to reveal the password as well.
    ; http://php.net/mysqli.default-pw
    mysqli.default_pw =
    ; Allow or prevent reconnect
    mysqli.reconnect = Off
    [mysqlnd]
    ; Enable / Disable collection of general statistics by mysqlnd which can be
    ; used to tune and monitor MySQL operations.
    ; http://php.net/mysqlnd.collect_statistics
    mysqlnd.collect_statistics = On
    ; Enable / Disable collection of memory usage statistics by mysqlnd which can be
    ; used to tune and monitor MySQL operations.
    ; http://php.net/mysqlnd.collect_memory_statistics
    mysqlnd.collect_memory_statistics = Off
    ; Size of a pre-allocated buffer used when sending commands to MySQL in bytes.
    ; http://php.net/mysqlnd.net_cmd_buffer_size
    ;mysqlnd.net_cmd_buffer_size = 2048
    ; Size of a pre-allocated buffer used for reading data sent by the server in
    ; bytes.
    ; http://php.net/mysqlnd.net_read_buffer_size
    ;mysqlnd.net_read_buffer_size = 32768
    [OCI8]
    ; Connection: Enables privileged connections using external
    ; credentials (OCI_SYSOPER, OCI_SYSDBA)
    ; http://php.net/oci8.privileged-connect
    ;oci8.privileged_connect = Off
    ; Connection: The maximum number of persistent OCI8 connections per
    ; process. Using -1 means no limit.
    ; http://php.net/oci8.max-persistent
    ;oci8.max_persistent = -1
    ; Connection: The maximum number of seconds a process is allowed to
    ; maintain an idle persistent connection. Using -1 means idle
    ; persistent connections will be maintained forever.
    ; http://php.net/oci8.persistent-timeout
    ;oci8.persistent_timeout = -1
    ; Connection: The number of seconds that must pass before issuing a
    ; ping during oci_pconnect() to check the connection validity. When
    ; set to 0, each oci_pconnect() will cause a ping. Using -1 disables
    ; pings completely.
    ; http://php.net/oci8.ping-interval
    ;oci8.ping_interval = 60
    ; Connection: Set this to a user chosen connection class to be used
    ; for all pooled server requests with Oracle 11g Database Resident
    ; Connection Pooling (DRCP). To use DRCP, this value should be set to
    ; the same string for all web servers running the same application,
    ; the database pool must be configured, and the connection string must
    ; specify to use a pooled server.
    ;oci8.connection_class =
    ; High Availability: Using On lets PHP receive Fast Application
    ; Notification (FAN) events generated when a database node fails. The
    ; database must also be configured to post FAN events.
    ;oci8.events = Off
    ; Tuning: This option enables statement

  • Need to import html stylesheet

    I need to print the html data, thus import the html stylesheet which is the xsl file.
    Does anyone know where should I put this stylesheet i.e., the path in ebusiness suite and import the same in my template.
    Right now for testing purposes I have put the xsl file in my local directory.
    Thanks,
    -Ritu

    can you see what I'm doing wrong?
    http://174.127.110.49/~bluewat2/test/test.php
    the script's not showing any code or results.
    Here's what's in the php file:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Untitled Document</title>
    </head>
    <body>
    <?php
    $string = file_get_contents("http://www.cbsa-asfc.gc.ca/bwt-taf/bwt-eng.csv");
    $strings = explode("\n", $string);
    foreach ($strings as $line) {
         if (substr($line,0,17) == "Blue Water Bridge") {
              $subline = explode(";",$line);
              echo $subline[0] . ":";
              echo " Canada bound: " . $subline[6] . "<br>";
              echo " USA bound: " . $subline[10] . "<br>";
              echo " last updated: " . date("h:ia d F, Y",strtotime($subline[4]));
    ?>
    <?php
    $string = file_get_contents("http://www.cbsa-asfc.gc.ca/bwt-taf/bwt-eng.csv");
    exit($string);
    /* $strings = explode("\n", $string);
    foreach ($strings as $line) {
         if (substr($line,0,12) == "North Portal") {
              $subline = explode(";",$line);
              echo $subline[0] . ":";
              echo " eastbound: " . $subline[6] . "<br>";
              echo " westbound: " . $subline[10] . "<br>";
              echo " last updated: " . date("h:ia d F, Y",strtotime($subline[4]));
    ?>
    </body>
    </html>

  • Cannot open PDF - "file is damaged and could not be repaired"

    We created a signable, saveable, Reader Extended PDF in Acrobat X 10.1.4, with a Submit button that exports it using the "PDF The complete document" format to a .php page on our website using the url: http://www.todayscihld.us/pdfscript/fdf.php?form_name=WebForm 
    This is the .php page that's supposed to receive the export via the submit button and email it as an attachment:
    <?php
    // $form_name is provided in the url that calls this page, allowing this page
    // to be called from different PDF's, yet customized for each one
    $date = (date ("m/d/y"));
    $time = (date ("H:i:s T"));
    $tmpname = (date ("mdy-His"));
    $message = '
    This is a multi-part message in MIME format.
    ------=_NextPart_000_0007_01C37EC6.3F062EA0
    Content-Type: text/plain;
        charset="iso-8859-1"
    Content-Transfer-Encoding: 7bit
    A '.$form_name.' was submitted from the Website at '.$time.' on '.$date.'.
    (attachment: '.$form_name.')
    ------=_NextPart_000_0007_01C37EC6.3F062EA0
    Content-Type: application/vnd.fdf;
        name="PDF-'.$tmpname.'.pdf"
    Content-Transfer-Encoding: base64
    Content-Disposition: attachment;
        filename="PDF-'.$tmpname.'.pdf"
    '.base64_encode(file_get_contents('php://input')).'
    ------=_NextPart_000_0007_01C37EC6.3F062EA0--
    $recip = "[email protected]";
    $subject = $form_name;
    $headers = "From: Website <[email protected]>\n";
    $headers .= "Return-Path: <[email protected]>\n";
    //use the following line for bcc:
    //$headers .= "bcc: [email][email protected][/email]\n";
    $headers .= "Content-Type: multipart/mixed; boundary=\"----=_NextPart_000_0007_01C37EC6.3F062EA0\"\n";
    $status = mail($recip, $subject, $message, $headers);
    Header("Location: http://www.todayschild.us/page.php?3");
    ?>
    Most of the time this works, however some of the time we get blank PDF files (<10KB), and sometimes we get filled PDF files that we cannot open in Adobe Reader X 10.1.4 - we get the "file is damaged and could not be repaired" error.  However, I can view this "damaged" pdf just fine in the Chrome built-in PDF viewer, and I can open it using Foxit Reader and Nitro Reader.  And if I open it in one of those programs and then save it under a new name, I can open the newly saved file in Adobe Reader.  So why is it that everything except Adobe Reader can open this file?
    Here's one of these problem PDF files: https://dl.dropbox.com/u/65535781/PDF-112612-162749.pdf
    Can anyone help me figure out what's going wrong, and what we can do to fix it? 

    Back up all data.
    Triple-click the line of text below to select it, the copy the selected text to the Clipboard (command-C):
    /Library/Internet Plug-ins
    In the Finder, select
    Go ▹ Go to Folder
    from the menu bar, or press the key combination shift-command-G. Paste into the text box that opens (command-V), then press return.
    From the folder that opens, remove any items that have the letters “PDF” in the name. You may be prompted for your login password. Then quit and relaunch Safari, and test.
    The "Silverlight" web plugin distributed by Microsoft can also interfere with PDF display in Safari, so you may need to remove it as well, if it's present.
    If you still have the issue, repeat with this line:
    ~/Library/Internet Plug-ins
    If you don’t like the results of this procedure, restore the items from the backup you made before you started. Relaunch Safari again.

  • Need help with PHP mail script [was: Can someone please help me?]

    I'm trying to collect data from a form and email it.  I'm using form2mail.php and the problem is that the email is not collecting the form info and it has the same email address in the From: and To: lines. I'm really stuck and would appreciate any help.
    Here is the HTML code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Contact Us</title>
    <style type="text/css">
    <!--
    .style1 {font-family: Verdana, Arial, Helvetica, sans-serif}
    .style2 {
    font-size: 14px;
    color: #000000;
    body {
    background-color: #FFFFFF;
    body,td,th {
    color: #CC3300;
    .style3 {font-size: 14px; font-weight: bold; }
    .style6 {font-size: 18px}
    .style7 {font-size: 16px}
    .style8 {font-size: 16px; font-family: Verdana, Arial, Helvetica, sans-serif; }
    .style9 {font-size: 16px; font-weight: bold; font-family: Verdana, Arial, Helvetica, sans-serif; }
    .style10 {color: #000000}
    -->
    </style>
    </head>
    <body>
    <div align="center"><img src="nav2.jpg" alt="nav bar" width="698" height="91" border="0" usemap="#Map2" />
      <map name="Map2" id="Map2">
      <area shape="rect" coords="560,9,684,38" href="accessories.html" />
    <area shape="rect" coords="456,8,548,38" href="contact.html" />
    <area shape="rect" coords="305,8,435,40" href="photog.html" />
    <area shape="rect" coords="187,9,283,39" href="services.html" />
    <area shape="rect" coords="81,10,167,39" href="aboutus.html" />
    <area shape="rect" coords="5,10,68,39" href="index.html" />
    </map>
      <map name="Map" id="Map">
        <area shape="rect" coords="9,9,69,39" href="index.html" />
        <area shape="rect" coords="83,11,165,39" href="aboutus.html" />
        <area shape="rect" coords="182,9,285,38" href="services.html" />
        <area shape="rect" coords="436,14,560,37" href="contact.html" />
        <area shape="rect" coords="563,14,682,38" href="accessories.html" />
      </map>
    </div>
    <p> </p>
    <form id="TheForm" name="TheForm" action="form2mail.php" method="post">
      <p align="center" class="style2">P<span class="style1">lease fill out form below for a &quot;free no obligation quote&quot; then click submit.</span></p>
      <p align="center" class="style3">(*Required Information)</p>
      <div align="center">
        <pre><strong><span class="style8">*Contact Name</span> </strong><input name="name" type="text" id="name" />
    <span class="style8"><strong>
    Business Name </strong></span><input name="bn" type="text" id="bn" />
    <span class="style8"><strong>*Phone Number <input type="text" name="first" size="3" onFocus="this.value='';"
        onKeyup="checkNumber(this.value); autoTab(this, document.TheForm.second);" maxlength="3" value="###" /> - <input type="text" name="second" size="3" onFocus="this.value='';" onKeyup="checkNumber(this.value); autoTab(this, document.TheForm.third);" maxlength="3" value="###" /> - <input type="text" name="third" size="4" onFocus="this.value='';" onKeyup="checkNumber(this.value); autoTab(this, document.TheForm.fourth);" maxlength="4" value="####"/> </strong></span>
    <strong><span class="style1">*</span><span class="style8">Email Address</span> <input name="email" type="text" id="email" />     </strong> </pre>
        <label><span class="style9">*Re-enter to confirm</span>
        <input name="emx" type="text" id="emx" /></label><br /><br /><span class="style9">
    <label></label>
        </span>
        <p><span class="style9">*Best time to call </span>
          <select name="name1[]" multiple size="1" >
            <option>8am-9am</option>
            <option>9am-10am</option>
            <option>10am-11am</option>
            <option>11am-12pm</option>
            <option>12pm-1pm</option>
            <option>1pm-2pm</option>
            <option>2pm-3pm</option>
            <option>3pm-4pm</option>
            <option>4pm-5pm</option>
            <option>5pm-6pm</option>
            <option>6pm-7pm</option>
            <option>7pm-8pm</option>
          </select>
          <br />
          <br />
          <span class="style9">Type of Location</span>
          <select name="name2[]" multiple size="1" >
            <option>Residential</option>
            <option>Commercial</option>
          </select>
          <br />
          <br />
            <span class="style1"><br />
            <strong><br />
              <span class="style6">*Type of Services Requested:</span></strong><br />
            </span><strong><span class="style10">(check all that apply)</span><br />
                </strong><br />
                <span class="style7"><span class="style1"><strong>Janitorial cleaning</strong></span>
                <input type="checkbox" name="checkbox[]" value="checkbox" multiple/>
                <br />
                </span><strong><br />
                  <span class="style8">Mobile Auto Detailing</span>
                <input type="checkbox" name="checkbox2[]" value="checkbox" multiple/>
                <br />
                <br />
                  </strong><span class="style9">Moving/Hauling</span>
          <input type="checkbox" name="checkbox3[]" value="checkbox" multiple/>
          <br />
          <br />
                  <span class="style9">Pressure washing</span>
          <input type="checkbox" name="checkbox4[]" value="checkbox" multiple/>
          <br />
          <br />
                  <span class="style9">Window washing</span>
          <input type="checkbox" name="checkbox5[]" value="checkbox" multiple/>
          <br />
          <br />
                  <span class="style9">Window Tinting</span>
          <input type="checkbox" name="checkbox6[]" value="checkbox" multiple/>
          <br />
          <br />
                  <span class="style9">Boat cleaning</span>
          <input type="checkbox" name="checkbox7[]" value="checkbox" multiple/>
          <br />
          <br />
                  <span class="style9">RV cleaning</span>
          <input type="checkbox" name="checkbox8[]" value="checkbox" multiple/>
          <br />
          <br />
                  <span class="style9">Motorcycle cleaning</span>
          <input type="checkbox" name="checkbox9[]" value="checkbox" multiple/>
          <br />
          <br />
          <br />
          <br />
          <input name="SB"  type="button" class="style9" value="Submit" onClick="sendOff();">
        </p>
      </div></label>
      <script language="JavaScript1.2">
    // (C) 2000 www.CodeLifter.com
    // http://www.codelifter.com
    // Free for all users, but leave in this  header
    var good;
    function checkEmailAddress(field) {
    // Note: The next expression must be all on one line...
    //       allow no spaces, linefeeds, or carriage returns!
    var goodEmail = field.value.match(/\b(^(\S+@).+((\.com)|(\.net)|(\.edu)|(\.mil)|(\.gov)|(\.org) |(\..{2,2}))$)\b/gi);
    if (goodEmail){
       good = true
    } else {
       alert('Please enter a valid e-mail address.')
       field.focus()
       field.select()
       good = false
    function autoTab(startPoint,endPoint){
    if (startPoint.getAttribute&&startPoint.value.length==startPoint.getAttribute("max length"))
    endPoint.focus();
    function checkNumber(phoneNumber){
    var x=phoneNumber;
    var phoneNumber=/(^\d+$)|(^\d+\.\d+$)/
    if (phoneNumber.test(x))
    testResult=true
    else{
    alert("Please enter a valid number.")
    phoneNumber.focus();
    phoneNumber.value="";
    testResult=false
    return (testResult)
    function sendOff(){
       namecheck = document.TheForm.name.value   
       if (namecheck.length <1) {
          alert('Please enter your name.')
          return
       good = false
       checkEmailAddress(document.TheForm.email)
       if ((document.TheForm.email.value ==
            document.TheForm.emx.value)&&(good)){
          // This is where you put your action
          // if name and email addresses are good.
          // We show an alert box, here; but you can
          // use a window.location= 'http://address'
          // to call a subsequent html page,
          // or a Perl script, etc.
          window.location= 'form2mail.php';
       if ((document.TheForm.email.value !=
              document.TheForm.emx.value)&&(good)){
              alert('Both e-mail address entries must match.')
    </script>
    </form>
    <p> </p>
    </body>
    </html>
    and here is the form2mail.php:
    <?php
    # You can use this script to submit your forms or to receive orders by email.
    $MailToAddress = "[email protected]"; // your email address
    $redirectURL = "http://www.chucksmobile.com/thankyou.html"; // the URL of the thank you page.
    $MailSubject = "[Customer Contact Info]"; // the subject of the email
    $sendHTML = FALSE; //set to "false" to receive Plain TEXT e-mail
    $serverCheck = FALSE; // if, for some reason you can't send e-mails, set this to "false"
    # copyright 2006 Web4Future.com =================== READ THIS ===================================================
    # If you are asking for a name and an email address in your form, you can name the input fields "name" and "email".
    # If you do this, the message will apear to come from that email address and you can simply click the reply button to answer it.
    # To block an IP, simply add it to the blockip.txt text file.
    # CHMOD 777 the blockip.txt file (run "CHMOD 777 blockip.txt", without the double quotes)
    # This is needed because the script tries to block the IP that tried to hack it
    # If you have a multiple selection box or multiple checkboxes, you MUST name the multiple list box or checkbox as "name[]" instead of just "name"
    # you must also add "multiple" at the end of the tag like this: <select name="myselectname[]" multiple>
    # you have to do the same with checkboxes
    Web4Future Easiest Form2Mail (GPL).
    Copyright (C) 1998-2006 Web4Future.com All Rights Reserved.
    http://www.Web4Future.com/
    This script was written by George L. & Calin S. from Web4Future.com
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
    # DO NOT EDIT BELOW THIS LINE UNLESS YOU KNOW WHAT YOU ARE DOING ===================================================
    $w4fver =  "2.2";
    $ip = ($_SERVER['HTTP_X_FORWARDED_FOR'] == "" ? $_SERVER['REMOTE_ADDR'] : $_SERVER['HTTP_X_FORWARDED_FOR']);
    //function blockIP
    function blockip($ip) {
    $handle = @fopen("blockip.txt", 'a');
    @fwrite($handle, $ip."\n");
    @fclose($handle);
    $w4fx = stristr(file_get_contents('blockip.txt'),getenv('REMOTE_ADDR'));
    if ($serverCheck) {
    if (preg_match ("/".str_replace("www.", "", $_SERVER["SERVER_NAME"])."/i", $_SERVER["HTTP_REFERER"])) { $w4fy = TRUE; } else { $w4fy = FALSE; }
    } else { $w4fy = TRUE; }
    if (($w4fy === TRUE) && ($w4fx === FALSE)) {
    $w4fMessage = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\"><html>\n<head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\"></head><body><font face=3Dverdana size=3D2>";
    if (count($_GET) >0) {
    reset($_GET);
    while(list($key, $val) = each($_GET)) {
      $GLOBALS[$key] = $val;
      if (is_array($val)) {
       $w4fMessage .= "<b>$key:</b> ";
       foreach ($val as $vala) {
        $vala =stripslashes($vala);
        $vala = htmlspecialchars($vala);
        if (trim($vala)) { if (stristr($vala,"Content-Type:") || stristr($vala,"MIME-Version") || stristr($vala,"Content-Transfer-Encoding") || stristr($vala,"bcc:")) { blockip($ip); die("ILLEGAL EXECUTION DETECTED!"); } }
        $w4fMessage .= "$vala, ";
       $w4fMessage .= "<br>\n";
      else {
       $val = stripslashes($val);
       if (trim($val)) { if (stristr($val,"Content-Type:") || stristr($val,"MIME-Version") || stristr($val,"Content-Transfer-Encoding") || stristr($val,"bcc:")) { blockip($ip); die("ILLEGAL EXECUTION DETECTED!"); } }
       if (($key == "Submit") || ($key == "submit")) { } 
       else {  if ($val == "") { $w4fMessage .= "$key: - <br>\n"; }
         else { $w4fMessage .= "<b>$key:</b> $val<br>\n"; }
    } // end while
    }//end if
    else {
    reset($_POST);
    while(list($key, $val) = each($_POST)) {
      $GLOBALS[$key] = $val;
      if (is_array($val)) {
       $w4fMessage .= "<b>$key:</b> ";
       foreach ($val as $vala) {
        $vala =stripslashes($vala);
        $vala = htmlspecialchars($vala);
        if (trim($vala)) { if (stristr($vala,"Content-Type:") || stristr($vala,"MIME-Version") || stristr($vala,"Content-Transfer-Encoding") || stristr($vala,"bcc:")) {blockip($ip); die("ILLEGAL EXECUTION DETECTED!"); } }   
        $w4fMessage .= "$vala, ";
       $w4fMessage .= "<br>\n";
      else {
       $val = stripslashes($val);
       if (trim($val)) { if (stristr($val,"Content-Type:") || stristr($val,"MIME-Version") || stristr($val,"Content-Transfer-Encoding") || stristr($val,"bcc:")) {blockip($ip); die("ILLEGAL EXECUTION DETECTED!"); } }
       if (($key == "Submit") || ($key == "submit")) { } 
       else {  if ($val == "") { $w4fMessage .= "$key: - <br>\n"; }
         else { $w4fMessage .= "<b>$key:</b> $val<br>\n"; }
    } // end while
    }//end else
    $w4fMessage .= "<font size=3D1><br><br>\n Sender IP: ".$ip."</font></font></body></html>";
        $w4f_what = array("/To:/i", "/Cc:/i", "/Bcc:/i","/Content-Type:/i","/\n/");
    $name = preg_replace($w4f_what, "", $name);
    $email = preg_replace($w4f_what, "", $email);
    if (!$email) {$email = $MailToAddress;}
    $mailHeader = "From: $name <$email>\r\n";
    $mailHeader .= "Reply-To: $name <$email>\r\n";
    $mailHeader .= "Message-ID: <". md5(rand()."".time()) ."@". ereg_replace("www.","",$_SERVER["SERVER_NAME"]) .">\r\n";
    $mailHeader .= "MIME-Version: 1.0\r\n";
    if ($sendHTML) {
      $mailHeader .= "Content-Type: multipart/alternative;";  
      $mailHeader .= "  boundary=\"----=_NextPart_000_000E_01C5256B.0AEFE730\"\r\n";    
    $mailHeader .= "X-Priority: 3\r\n";
    $mailHeader .= "X-Mailer: PHP/" . phpversion()."\r\n";
    $mailHeader .= "X-MimeOLE: Produced By Web4Future Easiest Form2Mail $w4fver\r\n";
    if ($sendHTML) {
      $mailMessage = "This is a multi-part message in MIME format.\r\n\r\n";
      $mailMessage .= "------=_NextPart_000_000E_01C5256B.0AEFE730\r\n";
      $mailMessage .= "Content-Type: text/plain;   charset=\"ISO-8859-1\"\r\nContent-Transfer-Encoding: quoted-printable\r\n\r\n";  
      $mailMessage .= trim(strip_tags($w4fMessage))."\r\n\r\n";  
      $mailMessage .= "------=_NextPart_000_000E_01C5256B.0AEFE730\r\n";  
      $mailMessage .= "Content-Type: text/html;   charset=\"ISO-8859-1\"\r\nContent-Transfer-Encoding: quoted-printable\r\n\r\n";  
      $mailMessage .= "$w4fMessage\r\n\r\n";  
      $mailMessage .= "------=_NextPart_000_000E_01C5256B.0AEFE730--\r\n";  
    if ($sendHTML === FALSE) {
      $mailHeader .= "Content-Type: text/plain;   charset=\"ISO-8859-1\"\r\nContent-Transfer-Encoding: quoted-printable\r\n\r\n";  
      $mailMessage .= trim(strip_tags($w4fMessage))."\r\n\r\n";  
    if (!mail($MailToAddress, $MailSubject, $mailMessage,$mailHeader)) { echo "Error sending e-mail!";}
    else { header("Location: ".$redirectURL); }
    } else { echo "<center><font face=verdana size=3 color=red><b>ILLEGAL EXECUTION DETECTED!</b></font></center>";}
    ?>
    Thanks in advance,
    Glenn
    [Subject line edited by moderator to indicate nature of request]

    Using PHP to process an online form and send the input by email is very simple. The mail() function takes a minimum of three arguments, namely: the address the mail is being sent to, the subject line, and the body of the email as a single string. The reason some people use scripts like form2mail.php is because they don't have the knowledge or patience to validate the user input to make sure it's safe to send.
    Rather than attempt to trawl through your complex form looking for the problems, I would suggest starting with a couple of simple tests.
    First of all, create a PHP page called mailtest.php containing the following script:
    <?php
    $to = '[email protected]'; // use your own email address
    $subject = 'PHP mail test';
    $message = 'This is a test of the mail() function.';
    $sent = mail($to, $subject, $message);
    if ($sent) {
      echo 'Mail was sent';
    } else {
      echo 'Problem sending mail';
    ?>
    Save the script, upload it to your server, and load it into a browser. If you see "Mail is sent", you're in business. If not, it probably means that the hosting company insists on the fifth argument being supplied to mail(). This is your email address preceded by -f. Change the line of code that sends the mail to this:
    $sent = mail($to, $subject, $message, null, '[email protected]');
    Obviously, replace "[email protected]" with your own email address.
    If this results in the mail being sent successfully, you will need to adapt the code in form2mail.php to accept the fifth parameter. You need to change the following line, which is a few lines from the end of the script:
    if (!mail($MailToAddress, $MailSubject, $mailMessage,$mailHeader))
    Change it to this:
    if (!mail($MailToAddress, $MailSubject, $mailMessage,$mailHeader, '[email protected]'))
    Again, use your own email address instead of "[email protected]".
    Once you have determined whether you need the fifth argument, test form2mail.php with a very simple form like this:
    <form id="form1" name="form1" method="post" action="form2mail.php">
      <p>
        <label for="name">Name:</label>
        <input type="text" name="name" id="name" />
      </p>
      <p>
        <label for="email">Email:</label>
        <input type="text" name="email" id="email" />
      </p>
      <p>
        <label>
          <input type="checkbox" name="options[]" value="boat cleaning" id="options_0" />
          Boat cleaning</label>
        <br />
        <label>
          <input type="checkbox" name="options[]" value="RV cleaning" id="options_1" />
          RV cleaning</label>
        <br />
        <label>
          <input type="checkbox" name="options[]" value="motorcycle cleaning" id="options_2" />
          Motorcycle cleaning</label>
      </p>
      <p>
        <input type="submit" name="send" id="send" value="Submit" />
      </p>
    </form>
    If that works, you can start to make the form more complex and add back your JavaScript validation.

  • Is there any way of storing audio- / video-elements in the browser cache in Safari in iOS?

    Hi there,
    I'm desperatly trying to find a solution for a web application that has to run on an iOS-Safari (e.g. on iPad, iPad2 and iPhone 4):
    It's a web-application I wrote some time ago which lets the user search for and listen to short music samples (MP3s, all from ~100 kB to ~1.5 MB). The audio player is Flash-based, so it doesn't work on iOS-devices at the moment and I'll have to implement an alternative either in HTML 5 or with a "direct" QuickTime-object.
    Both my HTML 5- and QuickTime-alternatives for iOS-devices work fine so far, but there's one major problem I can't find a solution to:
    Unlike Flash and most HTML 5-capable browsers on Windows Safari on my iPad 2 won't store the audiofiles in the browsercache after loading and playing them - neither with HTML 5 audio-tags nor with a QuickTime-Object. Every time I load an audio file for playback from the server (with JavaScript-Commands, so without changing or reloading the whole page) it's downloaded again completely.
    If a user listens to sample A and then to sample B, Safari forgot about having played sample A and downloads the whole MP3 again if I like to listen to it again. On a mobile device with a potentially narrow bandwith this behaviour is out of the question.
    Is there a way of storing downloaded audiofiles opened by HTML 5 or QuickTime in Safari's cache so it remembers already having downloaded them  -  like it caches usual "web-files" like HTML, CSS or JPEG-images, or like Flash stores such objects in its local cache?
    The Application Cache with a manifest-file is not an option - this only seems to work if the browser is offline, for example if the iOS-device is in "Airplane"-Mode.

    Yes, I watched it. It contains interesting stuff I have to admit I didn't know yet, but unfortunately I still can't find a solution to my problem:
    My first attempt was trying to use the Application Cache with a manifest file - although this is not really the intended purpose for my application... I don't have a static set of files that I want to have cached or "available offline"  -  I just want to cache MP3s which the user has played yet.
    It should be possible to use a "dynamic manifest": One that is parsed by the Apache PHP module and listing the files played so far from a PHP session - something like this:
    <?php
    session_start();
    header("Content-Type: text/cache-manifest, charset=UTF-8");
    echo "CACHE MANIFEST\n";
    foreach($_SESSION['playedSongs'] as $song)
        echo $song."\n";
    ?>
    So whenever a song is loaded / played, I could access the PHP session with AJAX, insert the filename of the played file and manually update the manifest by calling window.applicationCache.update().
    There are two problems with this:
    First of all: It doesn't work. And I didn't even get to the point of trying to use a dynamic manifest:
    <!DOCTYPE html>   
    <html manifest="cache.manifest">
        <head>
            <title>Test</title>
            <script type="text/javascript">
            function playStuff(id)
                if(id == 1)
                    window.document.getElementById("audio").innerHTML = '<audio controls preload="automatic" autobuffer><source src="song01.mp3" type="audio/mp3" /></audio>';
                else if(id == 2)
                    window.document.getElementById("audio").innerHTML = '<audio controls preload="automatic" autobuffer><source src="song02.mp3" type="audio/mp3" /></audio>';
            </script>
        </head>
        <body>
            <div id="audio"></div><br />
            <br />
            <input type="button" value="playStuff(1)" onclick="playStuff(1)" />
            <input type="button" value="playStuff(2)" onclick="playStuff(2)" />
        </body>
    </html>
    The cache.manifest looks like this:
    CACHE MANIFEST
    song01.mp3
    song02.mp3
    and is properly returned from Apache as "text/cache-manifest" by adding
    AddType text/cache-manifest manifest
    to the .htaccess of this directory.
    The Apache-logs clearly show that the Safari (respectively "AppleCoreMedia") doesn't care about the application cache when it comes to audio-files:
    Safari itself seems to acknowledge the manifest and indeed preload the files:
    192.168.0.40 - - [23/Jul/2011:12:45:46 +0200] "GET /websql/index2.html HTTP/1.1" 200 2619 "-" "Mozilla/5.0 (iPad; U; CPU OS 4_3_3 like Mac OS X; de-de) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5"
    192.168.0.40 - - [23/Jul/2011:12:45:46 +0200] "GET /websql/cache.manifest HTTP/1.1" 200 79 "-" "Mozilla/5.0 (iPad; U; CPU OS 4_3_3 like Mac OS X; de-de) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5"
    192.168.0.40 - - [23/Jul/2011:12:45:46 +0200] "GET /websql/cache.manifest?%3E HTTP/1.1" 200 79 "-" "Mozilla/5.0 (iPad; U; CPU OS 4_3_3 like Mac OS X; de-de) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5"
    192.168.0.40 - - [23/Jul/2011:12:45:46 +0200] "GET /websql/song02.mp3 HTTP/1.1" 200 120525 "-" "Mozilla/5.0 (iPad; U; CPU OS 4_3_3 like Mac OS X; de-de) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5"
    192.168.0.40 - - [23/Jul/2011:12:45:46 +0200] "GET /websql/song01.mp3 HTTP/1.1" 200 120525 "-" "Mozilla/5.0 (iPad; U; CPU OS 4_3_3 like Mac OS X; de-de) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5"
    Up to this point I did nothing but opening my test-application in Safari.
    Playing song01.mp3:
    192.168.0.40 - - [23/Jul/2011:12:47:25 +0200] "GET /websql/song01.mp3 HTTP/1.1" 206 2 "-" "AppleCoreMedia/1.0.0.8J2 (iPad; U; CPU OS 4_3_3 like Mac OS X; de_de)"
    192.168.0.40 - - [23/Jul/2011:12:47:25 +0200] "GET /websql/song01.mp3 HTTP/1.1" 206 120525 "-" "AppleCoreMedia/1.0.0.8J2 (iPad; U; CPU OS 4_3_3 like Mac OS X; de_de)"
    192.168.0.40 - - [23/Jul/2011:12:47:25 +0200] "GET /websql/song01.mp3 HTTP/1.1" 206 120525 "-" "AppleCoreMedia/1.0.0.8J2 (iPad; U; CPU OS 4_3_3 like Mac OS X; de_de)"
    192.168.0.40 - - [23/Jul/2011:12:47:25 +0200] "GET /websql/song01.mp3 HTTP/1.1" 304 - "-" "AppleCoreMedia/1.0.0.8J2 (iPad; U; CPU OS 4_3_3 like Mac OS X; de_de)"
    192.168.0.40 - - [23/Jul/2011:12:47:25 +0200] "GET /websql/song01.mp3 HTTP/1.1" 206 120525 "-" "AppleCoreMedia/1.0.0.8J2 (iPad; U; CPU OS 4_3_3 like Mac OS X; de_de)"
    192.168.0.40 - - [23/Jul/2011:12:47:29 +0200] "GET /websql/song01.mp3 HTTP/1.1" 304 - "-" "AppleCoreMedia/1.0.0.8J2 (iPad; U; CPU OS 4_3_3 like Mac OS X; de_de)"
    192.168.0.40 - - [23/Jul/2011:12:47:29 +0200] "GET /websql/song01.mp3 HTTP/1.1" 206 120525 "-" "AppleCoreMedia/1.0.0.8J2 (iPad; U; CPU OS 4_3_3 like Mac OS X; de_de)"
    Playing song2.mp3:
    192.168.0.40 - - [23/Jul/2011:12:48:04 +0200] "GET /websql/song02.mp3 HTTP/1.1" 206 2 "-" "AppleCoreMedia/1.0.0.8J2 (iPad; U; CPU OS 4_3_3 like Mac OS X; de_de)"
    192.168.0.40 - - [23/Jul/2011:12:48:04 +0200] "GET /websql/song02.mp3 HTTP/1.1" 206 120525 "-" "AppleCoreMedia/1.0.0.8J2 (iPad; U; CPU OS 4_3_3 like Mac OS X; de_de)"
    192.168.0.40 - - [23/Jul/2011:12:48:04 +0200] "GET /websql/song02.mp3 HTTP/1.1" 206 120525 "-" "AppleCoreMedia/1.0.0.8J2 (iPad; U; CPU OS 4_3_3 like Mac OS X; de_de)"
    192.168.0.40 - - [23/Jul/2011:12:48:04 +0200] "GET /websql/song02.mp3 HTTP/1.1" 304 - "-" "AppleCoreMedia/1.0.0.8J2 (iPad; U; CPU OS 4_3_3 like Mac OS X; de_de)"
    192.168.0.40 - - [23/Jul/2011:12:48:04 +0200] "GET /websql/song02.mp3 HTTP/1.1" 206 120525 "-" "AppleCoreMedia/1.0.0.8J2 (iPad; U; CPU OS 4_3_3 like Mac OS X; de_de)"
    192.168.0.40 - - [23/Jul/2011:12:48:05 +0200] "GET /websql/song02.mp3 HTTP/1.1" 304 - "-" "AppleCoreMedia/1.0.0.8J2 (iPad; U; CPU OS 4_3_3 like Mac OS X; de_de)"
    192.168.0.40 - - [23/Jul/2011:12:48:05 +0200] "GET /websql/song02.mp3 HTTP/1.1" 206 120525 "-" "AppleCoreMedia/1.0.0.8J2 (iPad; U; CPU OS 4_3_3 like Mac OS X; de_de)"
    Playing song1.mp3 again:
    192.168.0.40 - - [23/Jul/2011:12:48:38 +0200] "GET /websql/song01.mp3 HTTP/1.1" 304 - "-" "AppleCoreMedia/1.0.0.8J2 (iPad; U; CPU OS 4_3_3 like Mac OS X; de_de)"
    192.168.0.40 - - [23/Jul/2011:12:48:38 +0200] "GET /websql/song01.mp3 HTTP/1.1" 206 120525 "-" "AppleCoreMedia/1.0.0.8J2 (iPad; U; CPU OS 4_3_3 like Mac OS X; de_de)"
    192.168.0.40 - - [23/Jul/2011:12:48:38 +0200] "GET /websql/song01.mp3 HTTP/1.1" 206 120525 "-" "AppleCoreMedia/1.0.0.8J2 (iPad; U; CPU OS 4_3_3 like Mac OS X; de_de)"
    192.168.0.40 - - [23/Jul/2011:12:48:38 +0200] "GET /websql/song01.mp3 HTTP/1.1" 304 - "-" "AppleCoreMedia/1.0.0.8J2 (iPad; U; CPU OS 4_3_3 like Mac OS X; de_de)"
    192.168.0.40 - - [23/Jul/2011:12:48:38 +0200] "GET /websql/song01.mp3 HTTP/1.1" 206 120525 "-" "AppleCoreMedia/1.0.0.8J2 (iPad; U; CPU OS 4_3_3 like Mac OS X; de_de)"
    192.168.0.40 - - [23/Jul/2011:12:48:40 +0200] "GET /websql/song01.mp3 HTTP/1.1" 304 - "-" "AppleCoreMedia/1.0.0.8J2 (iPad; U; CPU OS 4_3_3 like Mac OS X; de_de)"
    192.168.0.40 - - [23/Jul/2011:12:48:40 +0200] "GET /websql/song01.mp3 HTTP/1.1" 206 120525 "-" "AppleCoreMedia/1.0.0.8J2 (iPad; U; CPU OS 4_3_3 like Mac OS X; de_de)"
    Playing song2.mp3 again:
    192.168.0.40 - - [23/Jul/2011:12:49:12 +0200] "GET /websql/song02.mp3 HTTP/1.1" 304 - "-" "AppleCoreMedia/1.0.0.8J2 (iPad; U; CPU OS 4_3_3 like Mac OS X; de_de)"
    192.168.0.40 - - [23/Jul/2011:12:49:12 +0200] "GET /websql/song02.mp3 HTTP/1.1" 206 120525 "-" "AppleCoreMedia/1.0.0.8J2 (iPad; U; CPU OS 4_3_3 like Mac OS X; de_de)"
    192.168.0.40 - - [23/Jul/2011:12:49:12 +0200] "GET /websql/song02.mp3 HTTP/1.1" 206 120525 "-" "AppleCoreMedia/1.0.0.8J2 (iPad; U; CPU OS 4_3_3 like Mac OS X; de_de)"
    192.168.0.40 - - [23/Jul/2011:12:49:12 +0200] "GET /websql/song02.mp3 HTTP/1.1" 304 - "-" "AppleCoreMedia/1.0.0.8J2 (iPad; U; CPU OS 4_3_3 like Mac OS X; de_de)"
    192.168.0.40 - - [23/Jul/2011:12:49:12 +0200] "GET /websql/song02.mp3 HTTP/1.1" 206 120525 "-" "AppleCoreMedia/1.0.0.8J2 (iPad; U; CPU OS 4_3_3 like Mac OS X; de_de)"
    192.168.0.40 - - [23/Jul/2011:12:49:13 +0200] "GET /websql/song02.mp3 HTTP/1.1" 304 - "-" "AppleCoreMedia/1.0.0.8J2 (iPad; U; CPU OS 4_3_3 like Mac OS X; de_de)"
    192.168.0.40 - - [23/Jul/2011:12:49:13 +0200] "GET /websql/song02.mp3 HTTP/1.1" 206 120525 "-" "AppleCoreMedia/1.0.0.8J2 (iPad; U; CPU OS 4_3_3 like Mac OS X; de_de)"
    Every file is downloaded again completely when playing it. So "AppleCoreMedia" (whatever this may be exactly, the QuickTime-plugin that is triggered by the HTML 5 audio-element I suppose?) either doesn't have access to the Application Cache or simply just doesn't realize the files in it. So if I switch my iPad to "Airplane Mode" now, the Safari is unable to access / load / play the files.
    I also tried using a QuickTime-object instead of an HTML 5 audio-tag (as far as I know HTML 5 audio and video in Safari always use QuickTime?) and controlling it with something like:
    document.movie1.SetURL('song02.mp3');
    Nothing changes, it's just like using HTML 5 audio and everything gets downloaded again when loading/playing it.
    And even if this would work there'd still be a problem:
    To properly implement that I would have to load the MP3-file in the Application Cache before playing it. When doing this it seems impossible to show a "real" progress: The ProgressEvent that is fired from the Application Cache after updating it doesn't seem to provide any information about data loaded so far and the complete size of a file. It's just "File 1 from 2" and so on, and not a "real" progress where I could determine something like: "100 kB of 1.2 MB loaded" as I can with the audio-element.
    All the other storage-approaches like Web SQL / Web Database or Local Storage are no help either:
    I don't see any way of getting the MP3 data into Local Storage or Web Database or getting it out again to play it. The HTML 5 Canvas-element has a toDataURL()-function to produce a Base64-encoded representation and use it for storage  -  the Audio-element doesn't seem to have anything like this.
    My last really "dirty" approach was trying to load "manually" Base64-encoded-MP3s with a combination of AJAX and PHP: A PHP-script outputs a Base64-representation of a MP3-file and is loaded by AJAX, so I could store the Base64-representation e.g. as Local Storage or in Web Database:
    <?php
    $infile = 'song01.mp3';
    $contents = file_get_contents($infile);
    $base64 = base64_encode($contents);
    $audio = 'data:audio/mp3;base64,'.$base64.'';
    echo $audio;
    ?>
    I tried using the resulting AJAX responseText as the source-argument in an audio-source-tag. Suprise: It doesn't work in Safari on my iPad 2, the player just fails to load the "file", although this works fine in Chrome on Windows. Possibly a size limitation for Base64-URIs on Safari / iOS.
    And again: Even if this was working in iOS/Safari I don't know of a way to determine a real progress from an AJAX-query...
    The last thing I could think of is not replacing the audio- or source-tags when loading a song but leaving them in the DOM-structure, check if it's already there when a song is loaded and just add a new audio-tag if a song hasn't been loaded yet.
    This solution would be my last resort: I'd have to rewrite nearly the whole application to completely operate on JavaScript / AJAX to stay on one site in the browser - else the "cached" audio data would be lost again when changing to another site in Safari.
    Furthermore I think there'll be a small cache limit somewhere when doing this?
    Any ideas?

  • Upload image in an html form to be emailed

    Hi everyone. Here is another one of my last minute, hurry up and wait requests.
    I have to create a form that will enable the viewer to upload an image and send the
    form on its way to a predetermined email address. This is for a contest starting tomorrow.
    The form has been made and works. The only thing I haven't worked out yet is the "upload image"
    feature. This is absolutely necessary and must be included. I have tested this several times and all the data
    comes thru. What I need is for an image to go along with the form fields and appear when the email is opened.
    With all due respect I do not have a very long learning curve here so if anyone can just provide
    me with the code, both html and php, instruct me exactly where to place it I would be
    extremely appreciative.
    here is the temporary link:
    Sirui/Argraph Wildlife-Landscape Photo Contest
    The image upload button will be in between the two horizontal rules towards the bottom of the form;
    above the submit/reset buttons.
    Thanks in advance as always.
    -Cliff-

    Below is the code and php for your complete form together with the file upload field and code. How you style the form and validate the form fields (if your going to) is down to you. Change the email address marked in red to that of the recipient you want the information to go to.
    You need to copy all the code and save it with a php extension so instead of:
    SiruiWildlifePhotoContestEntryForm.html
    This:
    SiruiWildlifePhotoContestEntryForm.php
    Obvioulsy being php it only works if the file is on a php enabled server so if you dont have a local testing server you need to upload it to your remote server before it will work.
    <?php
    if(isset($_POST['Submit']))
    //The form has been submitted, prep a nice thank you message
    $output = '<h1>Thanks for your file and message!</h1>';
    //Set the form flag to no display (cheap way!)
    $flags = 'style="display:none;"';
    //Deal with the email
    $to = 'yourEmailAddress.com';
    $subject = 'Competition Entry';
    $LastName = ($_POST['LastName']);
    $FirstName = ($_POST['FirstName']);
    $Email = ($_POST['Email']);
    $Phone = ($_POST['Phone']);
    $Address1 = ($_POST['Address1']);
    $Address2 = ($_POST['Address2']);
    $City = ($_POST['City']);
    $State = ($_POST['State']);
    $Zip = ($_POST['Zip']);
    $Dealer = ($_POST['Dealer']);
    $TripodMonopodHead = ($_POST['TripodMonopodHead']);
    $CameraLens = ($_POST['CameraLens']);
    $ImageEntry = ($_POST['ImageEntry']);
    $DepositWhere = ($_POST['DepositWhere']);
    $YouTubePage = ($_POST['YouTubePage']);
    $attachment = chunk_split(base64_encode(file_get_contents($_FILES['file']['tmp_name'])));
    $filename = $_FILES['file']['name'];
    $boundary =md5(date('r', time()));
    $headers = "From: [email protected]\r\nReply-To: [email protected]";
    $headers .= "\r\nMIME-Version: 1.0\r\nContent-Type: multipart/mixed; boundary=\"_1_$boundary\"";
    $message = "Last Name: $LastName\n\n";
    $message .= "First Name: $FirstName\n\n";
    $message .= "Email: $Email\n\n";
    $message .= "Phone: $Phone\n\n";
    $message .= "Address1: $Address1\n\n";
    $message .= "Address2: $Address2\n\n";
    $message .= "City: $City\n\n";
    $message .= "State: $State\n\n";
    $message .= "Zip: $Zip\n\n";
    $message .= "Dealer: $Dealer\n\n";
    $message .= "Tripod Monopod Head: $TripodMonopodHead\n\n";
    $message .= "Camera Lens: $CameraLens\n\n";
    $message .= "Deposit Where: $DepositWhere\n\n";
    $message .= "You Tube Page: $YouTubePage\n\n";
    $message.="This is a multi-part message in MIME format.
    --_1_$boundary
    Content-Type: multipart/alternative; boundary=\"_2_$boundary\"
    --_2_$boundary
    Content-Type: text/plain; charset=\"iso-8859-1\"
    Content-Transfer-Encoding: 7bit
    $message
    --_2_$boundary--
    --_1_$boundary
    Content-Type: application/octet-stream; name=\"$filename\"
    Content-Transfer-Encoding: base64
    Content-Disposition: attachment
    $attachment
    --_1_$boundary--";
    mail($to, $subject, $message, $headers);
    ?>
    <!DOCTYPE HTML>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>MailFile</title>
    </head>
    <body>
    <?php echo $output; ?>
    <form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" <?php echo $flags;?>>
    <p><label for="LastName" class="barheader">Last Name:</label>
    <input name="LastName" type="text" id="LastName" size="28" maxlength="50" />
    </p>
    <p><label for="FirstName" class="barheader">First Name:</label>
    <input name="FirstName" type="text" id="FirstName" size="28" maxlength="50" />
    </p>
    <p><label for="Email" class="barheader">Email:</label>
    <input name="Email" type="text" id="Email" size="50" maxlength="75" />
    </p>
    <p><label for="Phone" class="barheader">Phone:</label>
    <input name="Phone" type="text" id="Phone" size="12" maxlength="15" />
    </p>
    <p><label for="Address1" class="barheader">Address 1:</label>
    <input name="Address1" type="text" id="Address1" size="75" maxlength="100" />
    </p>
    <p><label for="Address2" class="barheader">Address 2:</label>
    <input name="Address2" type="text" id="Address2" size="75" maxlength="100" />
    </p>
    <p><label for="City" class="barheader">City:</label>
    <input name="City" type="text" id="City" size="33" />
    </p>
    <p><label for="State"><span class="barheader">State:</span></label>
    <input name="State" type="text" id="State" size="2" maxlength="2" />
    </p>
    <p><label for="Zip" class="barheader">Zip:</label>
    <input name="Zip" type="text" id="Zip" size="10" maxlength="10" />
    </p><label for="Dealer" class="barheader">Dealer:</label>
    <input name="Dealer" type="text" id="Dealer" size="100" maxlength="150" />
    </p>
    <p><label for="Tripod/Monopod/Head Used:" class="barheader">Tripod/Monopod/Head Used:</label>
    <input name="TripodMonopodHead" type="text" id="Tripod/Monopod/Head Used:" size="75" maxlength="100" />
    </p>
    <p><label for="YouTubePage" class="barheader">Camera/Lens Used:</label>
    <input name="CameraLens" type="text" id="Camera/Lens Used:" size="75" maxlength="100" />
    </p>
    <p><label for="Image/Entry:" class="barheader">Image/Entry #:</label>
    <input name="ImageEntry" type="text" id="Image/Entry:" size="25" maxlength="25" />
    </p>
    <p></p>Where will you deposit your entry?:</p>
    <p><label for="DepositWhere"></label>
    <input name="DepositWhere" type="text" id="DepositWhere:" size="20" maxlength="50" />
    </p>
    <p><label for="YouTubePage" class="barheader">For YouTube Videos: URL to your YouTube page:</label>
    <input name="YouTubePage" type="text" id="YouTubePage" size="50" maxlength="100" />
    </p>
    <p>
    <label for="file">Attach File</label> <input type="file" name="file" id="file"></p>
    <input type="submit" name="Submit" id="Submit" value="Submit" />
    <input type="reset" name="Reset" id="Reset" value="Reset" />
    </form>
    </body>
    </html>

  • Admin Commands issue on Windows Web Server 2008 R2 - 64Bit

    Hi,
    I have tried exactly same process on FMS3.5 Installed on Centos and it worked perfectly.
    But not working in case of Windows Web Server 2008 R2 - 64Bit.
    Here is what i am trying to do -
    Basically i want to extract live streams list and display them in HTML as ordered list on another server them FMS.
    What i did in the case of FMS on Centos server -
    I installed Apache and PHP on this server and created a PHP file with following text in it. -
    abc.php
       $xml = simplexml_load_file('http://<fms-server-ip>:1111/admin/getLiveStreams?auser=admin&apswd=password&appInst=live','Simple XMLElement', LIBXML_NOCDATA);
    foreach($xml->children() as $child)
       foreach($child->children() as $child2)
              echo $child2 . ",";
    and in hosting server where i want to display the list i entered following code in PHP file -
    $homepage = file_get_contents('http://<fms-server-ip>/abc.php');
    echo $homepage;
    i got comma seperated values easily and everything is loading fast without any issue.
    Now problem occured with Windows Web Server 2008 R2 - 64Bit.
    I installed FMS, Apache and PHP in this server also, did evrything in the same way like in centos.
    FMS, APache and PHP files are working fine in this.
    But only problem occured when in abc.php i use
    $xml =  simplexml_load_file('http://<fms-server-ip>:1111/admin/getLiveStreams?auser=admin&apswd=password&appInst=live','Simple XMLElement',  LIBXML_NOCDATA);
    After this file do not loads and takes longer time to load and after some time a blank page appears. It works fine with a local XML file.
    i am able to see the XML file by opening it directly in browser, but somehow this is not working with   simplexml_load_file. I dont think this is PHP issue because with local XML file it works fine. May be some port issue or something else. But i am able to view XML file directly in browser from another computers as well.
    Kindly help, is there some other configurations should be changed in case of windows version. I have allowed admin commands as usual before doing all this. Ports 1111,80,1935 are also opened.
    Please guide

    Hi,
    Yes in Browser, the response is perfect. The only issue is in Calling inside in any file, i even tried Javascript's XML dom to load it, but same result, the file is just loading and never loads completely. I also tried using an SWF file with AS3 code to load XML inside as3 and send the result to any JS function.
    The output comes using trace in as3, but when it comes to browser, the same loading happends and result never loads.

  • How to send a document in net.HTTP.request as a POST variable?

    I have read and reread the doc on net.HTTP.request, and it says I can pass an argument of oRequest, but I have not succeeded at passing in the current document, which is what I want to do.
    I've tried app.activeDocs[0], or encoding that to a string, but though it makes the call without error, nothing is sent.
    Should oRequest be simply a document, or a variable made up of name-value pairs? How do we send multiple parameters to a POST otherwise?
    I've succeeded fine with calling using GET, but when I tried to pass the document as a GET variable, I got nothing either.
    I'm sending to a LiveCycle REST end point so either POST or GET is fine.
    Thanks!

    POSTing the current document is straightforward *provided* your script is running outside the document context (i.e. in the console or a folder-level script). There's no access from doc-level scripts for obvious reasons.
    For example, putting this in the JS console will POST the current file to a URL:
    Net.HTTP.request({
      cVerb:'POST',
      cURL: 'http://localhost/submit.php',
      oRequest: Collab.documentToStream(this),
      oHandler: {
        response: function (msg, uri, err) {
           if (err!=undefined) app.alert(msg);
    Your problem with talking to a vanilla webservice is that you cannot send the RFC1867 delimeters (i.e. form a "multipart/form-data" request) as the ReadStream object doesn't have a concatenation method in the Acrobat JSAPI. That's also how you would usually prepend other form fields, but if you're careful with your server-side coding you can send those as GET parameters in cURL. Normally you'd be polite and pass a Context-Type header in the aHeaders array - it won't matter to the transmission process but will allow your webservice to predict what the heck it's been sent.
    Your webservice will then have to read the raw data. In PHP for example, you won't get anything in the $_FILES global but you can grab the PDF by reading everything from the input buffer, with the line:
    $pdf = file_get_contents("php://input");
    If that line was in the server script that the above JS code was aimed at, the variable $pdf will contain an exact binary copy of the currently-open document.

  • Re: MySQL Database - NOT SAVING USER WEB-FORM DATA, ANY SUGGESTIONS...

    Hi, after adding the missing <html> tag, still doesn't make any difference, see below the php code and html form in context, the one you've asked me to paste.
    Note: I am trying to incorporate this, into an existing webpage, "the html form has to work with the existing html tags without duplicating" it's an existing webpage currently online.
    *Corrected the typing error Murray mentioned previously, about mysqli
    THE PHP CODE...
    <?php
    class MySessionHandler implements SessionHandlerInterface
    private $savePath;
    public function open($savePath, $sessionName)
      $this->savePath = $savePath;
      if (!is_dir($this->savePath)) {
       mkdir($this->savePath, 0777);
      return true;
    public function close()
      return true;
    public function read($id)
      return (string)@file_get_contents("$this->savePath/sess_$id");
    public function write($id, $data)
      return file_put_contents("$this->savePath/sess_$id", $data) === false ? false : true;
    public function destroy($id)
      $file = "$this->savePath/sess_$id";
      if (file_exists($file)) {
       unlink($file);
      return true;
    public function gc($maxlifetime)
      foreach (glob("$this->savePath/sess_*") as $file) {
       if (filemtime($file) + $maxlifetime < time() && file_exists($file)) {
        unlink($file);
      return true;
    $handler = new MySessionHandler();
    session_set_save_handler($handler, true);
    session_start();
    ?>
    <?php
    class session {
    var $lifeTime;
    var $dbHandle;
    function open($savePath, $sessName) {
      $this->lifeTime = get_cfg_var("session.gc_maxlifetime");
      $dbHandle = @mysql_connect("server", "user","password");
      $dbSel = @mysql_select_db("database",$dbHandle);
      if(!$dbHandle || !$dbSel)
       return false;
      $this->dbHandle = $dbHandle;
      return true;
    function close() {
      $this->gc(ini_get("session.gc_maxlifetime"));
      return @mysql_close($this->dbHandle);
    function read($sessID) {
      $res = mysql_query("SELECT session_data AS d FROM ws_sessions
         WHERE session_id = '$sessID'
         AND session_expires > " .time(), $this->dbHandle);
      if($row = mysql_fetch_assoc($res))
         return $row['d'];
      return "";
    function write($sessID, $sessData) {
      $newExp = time() + $this->lifeTime;
      $res = mysql_query("SELECT * FROM ws_sessions
         WHERE session_id = '$sessID'", $this->dbHandle);
      if(mysql_num_rows($res)) {
       mysql_query("UPDATE ws_sessions
          SET session_expires = '$newExp',
          session_data = '$sessData'
          WHERE session_id = '$sessID'", $this->dbHandle);
       if(mysql_affected_rows($this->dbHandle))
          return true;
      else {
       mysql_query("INSERT INTO ws_sessions (
          session_id,
          session_expires,
          session_data)
          VALUES(
          '$sessID'
          '$newExp'
          '$sessData')", $this->dbHandle);
       if(mysql_affected_rows($this->dbHandle))
          return true;
      return false;
    function destroy($sessID) {
      mysql_query("DELETE FROM ws_sessions WHERE session_id = '$sessID'", $this->dbHandle);
      if(mysql_affected_rows($this->dbHandle))
         return true;
      return false;
    function gc($sessMaxLifeTime) {
      mysql_query("DELETE FRKOM ws_sessions WHERE session_expires < " .time(), $this->dbHandle);
      return mysql_affected_rows($this->dbHandle);
    $session = new session();
    session_set_save_handler(array(&$session,"open"),
        array(&$session,"close"),
    array(&$session,"read"),
    array(&$session,"write"),
    array(&$session,"destroy"),
    array(&$session,"gc"));
    session_start();
    ?>
    <?php
    $conn = new mysqli("1and1.com", "dbo501129768", "simpsys", "db501129768");
    if ($mysqli->connect_error) {
    die('Connect Error (' . $mysqli->connect_errno . ') '  //CHECK CONNECTION.
       . $mysqli->connect_error);
    if (array_key_exists('submit', $_POST)){
    $userName = $_POST['username'];
    $firstName = $_POST['firstname'];
    $lastNmae = $_POST['lastname'];
    $password = $_POST['password'];
    $confirmPassword = $_POST['confirmPassword'];
    $conn->query("INSERT INTO ws_sessions (`user_name`, `first_name`, `last_name`, `email`, `password`, `confirm_password`) VALUES('$userName', '$firstName', '$lastName', '$email', '$password', '$confirmPassword')");
    ?>
    THE HTML FORM...   EDITED
    <!DOCTYPE html>
    <html>
    <head>
    <title>Admin</title>
    </head>
    <body>
    <form name='registration' method='post' action='insert_2.php' enctype="application/x-www-form-urlencoded">
        <p>Username: *</p>
        <p>
        <label for='username'></label>
        <input type='text' name='username' maxlength='40' size='60' tabindex='1'/>
        </p>
    <p>Firstname: *</p>
    <p>
    <label for='firstname'></label>
    <input type='text' name='firstname' maxlength='40' size='60' tabindex='2'/>   
    <p>Lastname: *</p>
    <p>
    <label for='lastname'></label>
    <input type='text' name='lastname' maxlength='40' size='60' tabindex='3'/>
        <p>Email: *</p>
        <p>
        <label for='email'></label>
        <input type='text' name='email' maxlength='40' size='60' tabindex='4'/>
        </p>
        <p>Password: *</p>
        <p>
        <label for='password'></label>
        <input type='password' name='password' id='password' maxlength='40' size='60' tabindex='5'/>
        </p>
        <p>Confirm password: *</p>
        <p>
        <label for='confirm password'></label>
        <input type='password' name='confirmPassword' id='confirmPassword' maxlength='40' size='60' tabindex='6'/>
        </p>
        <p>
        <input type='submit' value='Register'/>
        </p>
        <p> </p>
    </form>
    </body>
    </html> End of Form
    </div> "This tag and the ones below already exist inside the webpage"
    </div>
    </body>
    </html>
    I hope this helps - I appreciate your help.
    smartCode

    smartCode wrote:
    Hi, after adding the missing <html> tag, still doesn't make any difference, see below the php code and html form in context, the one you've asked me to paste.
    Note: I am trying to incorporate this, into an existing webpage, "the html form has to work with the existing html tags without duplicating" it's an existing webpage currently online.
    *Corrected the typing error Murray mentioned previously, about mysqli
    THE PHP CODE...
    <?php
    class MySessionHandler implements SessionHandlerInterface
    private $savePath;
    public function open($savePath, $sessionName)
      $this->savePath = $savePath;
      if (!is_dir($this->savePath)) {
       mkdir($this->savePath, 0777);
      return true;
    public function close()
      return true;
    public function read($id)
      return (string)@file_get_contents("$this->savePath/sess_$id");
    public function write($id, $data)
      return file_put_contents("$this->savePath/sess_$id", $data) === false ? false : true;
    public function destroy($id)
      $file = "$this->savePath/sess_$id";
      if (file_exists($file)) {
       unlink($file);
      return true;
    public function gc($maxlifetime)
      foreach (glob("$this->savePath/sess_*") as $file) {
       if (filemtime($file) + $maxlifetime < time() && file_exists($file)) {
        unlink($file);
      return true;
    $handler = new MySessionHandler();
    session_set_save_handler($handler, true);
    session_start();
    ?>
    <?php
    class session {
    var $lifeTime;
    var $dbHandle;
    function open($savePath, $sessName) {
      $this->lifeTime = get_cfg_var("session.gc_maxlifetime");
      $dbHandle = @mysql_connect("server", "user","password");
      $dbSel = @mysql_select_db("database",$dbHandle);
      if(!$dbHandle || !$dbSel)
       return false;
      $this->dbHandle = $dbHandle;
      return true;
    function close() {
      $this->gc(ini_get("session.gc_maxlifetime"));
      return @mysql_close($this->dbHandle);
    function read($sessID) {
      $res = mysql_query("SELECT session_data AS d FROM ws_sessions
         WHERE session_id = '$sessID'
         AND session_expires > " .time(), $this->dbHandle);
      if($row = mysql_fetch_assoc($res))
         return $row['d'];
      return "";
    function write($sessID, $sessData) {
      $newExp = time() + $this->lifeTime;
      $res = mysql_query("SELECT * FROM ws_sessions
         WHERE session_id = '$sessID'", $this->dbHandle);
      if(mysql_num_rows($res)) {
       mysql_query("UPDATE ws_sessions
          SET session_expires = '$newExp',
          session_data = '$sessData'
          WHERE session_id = '$sessID'", $this->dbHandle);
       if(mysql_affected_rows($this->dbHandle))
          return true;
      else {
       mysql_query("INSERT INTO ws_sessions (
          session_id,
          session_expires,
          session_data)
          VALUES(
          '$sessID'
          '$newExp'
          '$sessData')", $this->dbHandle);
       if(mysql_affected_rows($this->dbHandle))
          return true;
      return false;
    function destroy($sessID) {
      mysql_query("DELETE FROM ws_sessions WHERE session_id = '$sessID'", $this->dbHandle);
      if(mysql_affected_rows($this->dbHandle))
         return true;
      return false;
    function gc($sessMaxLifeTime) {
      mysql_query("DELETE FRKOM ws_sessions WHERE session_expires < " .time(), $this->dbHandle);
      return mysql_affected_rows($this->dbHandle);
    $session = new session();
    session_set_save_handler(array(&$session,"open"),
        array(&$session,"close"),
    array(&$session,"read"),
    array(&$session,"write"),
    array(&$session,"destroy"),
    array(&$session,"gc"));
    session_start();
    ?>
    <?php
    $conn = new mysqli("1and1.com", "dbo501129768", "simpsys", "db501129768");
    if ($mysqli->connect_error) {
    die('Connect Error (' . $mysqli->connect_errno . ') '  //CHECK CONNECTION.
       . $mysqli->connect_error);
    if (array_key_exists('submit', $_POST)){
    $userName = $_POST['username'];
    $firstName = $_POST['firstname'];
    $lastNmae = $_POST['lastname'];
    $password = $_POST['password'];
    $confirmPassword = $_POST['confirmPassword'];
    $conn->query("INSERT INTO ws_sessions (`user_name`, `first_name`, `last_name`, `email`, `password`, `confirm_password`) VALUES('$userName', '$firstName', '$lastName', '$email', '$password', '$confirmPassword')");
    ?>
    THE HTML FORM...   EDITED
    <!DOCTYPE html>
    <html>
    <head>
    <title>Admin</title>
    </head>
    <body>
    <form name='registration' method='post' action='insert_2.php' enctype="application/x-www-form-urlencoded">
        <p>Username: *</p>
        <p>
        <label for='username'></label>
        <input type='text' name='username' maxlength='40' size='60' tabindex='1'/>
        </p>
    <p>Firstname: *</p>
    <p>
    <label for='firstname'></label>
    <input type='text' name='firstname' maxlength='40' size='60' tabindex='2'/>   
    <p>Lastname: *</p>
    <p>
    <label for='lastname'></label>
    <input type='text' name='lastname' maxlength='40' size='60' tabindex='3'/>
        <p>Email: *</p>
        <p>
        <label for='email'></label>
        <input type='text' name='email' maxlength='40' size='60' tabindex='4'/>
        </p>
        <p>Password: *</p>
        <p>
        <label for='password'></label>
        <input type='password' name='password' id='password' maxlength='40' size='60' tabindex='5'/>
        </p>
        <p>Confirm password: *</p>
        <p>
        <label for='confirm password'></label>
        <input type='password' name='confirmPassword' id='confirmPassword' maxlength='40' size='60' tabindex='6'/>
        </p>
        <p>
        <input type='submit' value='Register'/>
        </p>
        <p> </p>
    </form>
    </body>
    </html> End of Form
    </div> "This tag and the ones below already exist inside the webpage"
    </div>
    </body>
    </html>
    I hope this helps - I appreciate your help.
    smartCode
    I'm trying to establish if the code I supplied is working or not, i.e. if something is being inserted into your database or not. Including all the other php classes/functions does not help at this time as there is probably some conflict going on -  you CAN'T mix mysqli and mysql
    What happens if you just use the code below. Yes, it's a basic form and mysqli connection BUT it should insert something in your ws_sessions table.
    Then you can start adding in the other php  functions one by one and see where it breaks down.
    <?php
    $conn = new mysqli("1and1.com", "dbo501129768", "simpsys", "db501129768");
    if (array_key_exists('submit', $_POST)){
    $userName = $_POST['username'];
    $firstName = $_POST['firstname'];
    $lastNmae = $_POST['lastname'];
    $password = $_POST['password'];
    $confirmPassword = $_POST['confirmPassword'];
    $conn->query("INSERT INTO ws_sessions (`user_name`, `first_name`, `last_name`, `email`, `password`, `confirm_password`) VALUES('$userName', '$firstName', '$lastName', '$email', '$password', '$confirmPassword')");
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    <title>Admin</title>
    </head>
    <body>
    <form name='registration' method='post' action='insert_2.php' enctype="application/x-www-form-urlencoded">
        <p>Username: *</p>
        <p>
        <label for='username'></label>
        <input type='text' name='username' maxlength='40' size='60' tabindex='1'/>
        </p>
    <p>Firstname: *</p>
    <p>
    <label for='firstname'></label>
    <input type='text' name='firstname' maxlength='40' size='60' tabindex='2'/>   
    <p>Lastname: *</p>
    <p>
    <label for='lastname'></label>
    <input type='text' name='lastname' maxlength='40' size='60' tabindex='3'/>
        <p>Email: *</p>
        <p>
        <label for='email'></label>
        <input type='text' name='email' maxlength='40' size='60' tabindex='4'/>
        </p>
        <p>Password: *</p>
        <p>
        <label for='password'></label>
        <input type='password' name='password' id='password' maxlength='40' size='60' tabindex='5'/>
        </p>
        <p>Confirm password: *</p>
        <p>
        <label for='confirm password'></label>
        <input type='password' name='confirmPassword' id='confirmPassword' maxlength='40' size='60' tabindex='6'/>
        </p>
        <p>
        <input type='submit' value='Register'/>
        </p>
        <p> </p>
    </form>
    </body>
    </html>

  • PhpMyAdmin Google reCAPTCHA v2 plugin not working

    I secure my phpMyAdmin login page using Google reCAPTCHA. Until recently, phpMyAdmin used the old v1 API of reCAPTCHA, but now uses the newer v2 API as of version 4.40.
    For some reason, I cannot get the new reCAPTCHA v2 API to accept my credentials to initiate a login. When I enter my correct username, password, and solve the CAPTCHA correctly, the page hangs for a few minutes and then spits out the following error messages:
    Warning in ./libraries/plugins/auth/recaptcha/recaptchalib.php#94
    file_get_contents(https://www.google.com/recaptcha/api/siteverify?secret=MYSECRETKEY&amp;remoteip=127.0.0.1&amp;v=php_1.0&amp;response=RESPONSE-TOKEN-FROM-RECAPTCHA): failed to open stream: Connection timed out
    Out of curiosity, I tested the reCAPTCHA URL generated above by copying and pasting it into my browser, and the following error message popped up:
    "success": false,
    "error-codes": [
    "missing-input-response"
    The error codes are generated by the API when the verification fails. According to the Google Developer site for the reCAPTCHA API, an error code of "missing-input-response" means "The response parameter is missing." The response parameter is not missing, however, if the URL is to be believed, so I'm confused as to why the error is occurring.
    I tried to resolve the problem by generating a new reCAPTCHA key pair for my domain (did not work), and by editing phpMyAdmin/libraries/plugins/auth/AuthenticationCookie.class.php to explicitly include the key pairs in the code as opposed to having them be pulled from config.inc.php in the main phpMyAdmin working directory where they are defined using:
    $cfg['CaptchaLoginPublicKey'] = 'PUBLIC-KEY';
    $cfg['CaptchaLoginPrivateKey'] = 'PRIVATE-KEY';
    This did not work, either.
    Is anybody else who uses reCAPTCHA with phpMyAdmin experiencing the same problem with the upgrade to reCAPTCHA v2? Or is there a possible bug in the recaptchalib.php configuration file for v2? I have also asked the same question on Stack Overflow, which is supposedly where phpMyAdmin support is now handled according to the phpMyAdmin official site, but have not received any responses yet. Any and all feedback would be appreciated.
    Last edited by cmorgenstern (2015-04-11 23:46:05)

    I already have openssl.so uncommented in my php.ini file, so I don't think that's the problem. Thanks for the suggestions, though.
    My setup is remotely accessible via a web server. The only symlink I have is from /etc/webapps/phpmyadmin/config.inc.php to /usr/share/webapps/phpmyadmin/config.inc.php so that phpmyadmin can find the config file when logging in. Is that what you're referring to?

  • PDF form submit button sends FDF instead of PDF

    i have PDF Form created  in Adobe Acrobat XI Pro
    i want to send PDF document to webserver
    my server code
    ob_start();
    $file = file_get_contents("php://input"); //Gets binary PDF Data
    $time = microtime(true); $newfile = "./customers/" . $time . ".pdf"; //Names file based on the time to the microsecond so nothing gets overwritten.
    $worked = file_put_contents($newfile, $file); //Creates File
    ob_end_clean();
    my problem is that i am getting FDF data, not PDF document.

    i investigated and found it works perfect if opened locally in adobe reader, it dont work in opened in chrome browser at website

Maybe you are looking for