Hey everyone, I was hoping someone could help me out on this.  I'm
trying to set up a tiddlywiki for my student group website (http://
groups.ku.edu/~uaa) with uploadplugin and store.php.
I just got the KU IT folks to enable suexec for my server.  I used
their instructions and ran their test (https://www2.ku.edu/
~webservices/reference/suexec/using.shtml), and everything works fine
(http://groups.ku.edu/~uaa/cgi-bin/test.shtml).  However, when I
follow the same directions for store.php, I get the Internal Server
Error (500) (http://groups.ku.edu/~uaa/cgi-bin/store.php).  If I try
putting store.php in the same folder as my tiddlywiki file, I just get
the code for the store.php (http://groups.ku.edu/~uaa/store.php).
Is there something wrong with the code I'm using (below) or is this a
flaw with my server?
Thanks,
Jeremy

<?php\
/***\
! User settings\
Edit these lines according to your need\
***/\
//\{\{\{\
$AUTHENTICATE_USER = true;      // true | false\
$USERS = array(\
        'Test1'=>'test1', \
        'UserName2'=>'Password2', \
        'UserName3'=>'Password3') // set usernames and strong passwords\
$DEBUG = false;                         // true | false\
$CLEAN_BACKUP = true;           // during backuping a file, remove overmuch
backups\
$FOLD_JS = true;                        // if javascript files have been 
expanded during
download the fold them\
error_reporting(E_ERROR | E_WARNING | E_PARSE);\
//\}\}\}\
/***\
!Code\
No change needed under\
***/\
//\{\{\{\
\
/***\
 * store.php - upload a file in this directory\
 * version :1.6.1 - 2007/08/01 - [email protected]\
 * \
 * see : \
 *      http://tiddlywiki.bidi.info/#UploadPlugin for usage\
 *      http://www.php.net/manual/en/features.file-upload.php \
 *              for details on uploading files\
 * usage : \
 *      POST  \
 *              UploadPlugin
[backupDir=<backupdir>;user=<user>;password=<password>;uploadir=<uploaddir>;
[debug=1];;]\
 *              userfile <file>\
 *      GET\
 *\
 * each external javascript file included by download.php is change by
a reference (src=...)\
 *\
 * Revision history\
 * V1.6.1 - 2007/08/01\
 * Enhancement: Add javascript folding\
 * V1.6.0 - 2007/05/17\
 * Enhancement: Add backup management\
 * V1.5.2 - 2007/02/13\
 * Enhancement: Add optional debug option in client parameters\
 * V1.5.1 - 2007/02/01\
 * Enhancement: Check value of file_uploads in php.ini. Thanks to
Didier Corbi\'e8re\
 * V1.5.0 - 2007/01/15\
 * Correct: a bug in moving uploadFile in uploadDir thanks to DaniGuti
\'e9rrez for reporting\
 * Refactoring\
 * V 1.4.3 - 2006/10/17 \
 * Test if $filename.lock exists for GroupAuthoring compatibility\
 * return mtime, destfile and backupfile after the message line\
 * V 1.4.2 - 2006/10/12\
 *  add error_reporting(E_PARSE);\
 * v 1.4.1 - 2006/03/15\
 *      add chmo 0664 on the uploadedFile\
 * v 1.4 - 2006/02/23\
 *      add uploaddir option :  a path for the uploaded file relative to
the current directory\
 *      backupdir is a relative path\
 *      make recusively directories if necessary for backupDir and uploadDir
\
 * v 1.3 - 2006/02/17\
 *      presence and value of user are checked with $USERS Array (thanks to
PauloSoares)\
 * v 1.2 - 2006/02/12 \
  *     POST  \
 *              UploadPlugin
[backupDir=<backupdir>;user=<user>;password=<password>;]\
 *              userfile <file>\
*       if $AUTHENTICATE_USER\
 *              presence and value of user and password are checked with \
 *              $USER and $PASSWORD\
 * v 1.1 - 2005/12/23 \
 *      POST  UploadPlugin[backupDir=<backupdir>]  userfile <file>\
 * v 1.0 - 2005/12/12 \
 *      POST userfile <file>\
 *\
 * Copyright (c) [email protected] 2005-2007\
 ***/\
//\}\}\}\
\
//\{\{\{\
\
if ($_SERVER['REQUEST_METHOD'] == 'GET') \{\
        /*\
         * GET Request\
         */\
?>\
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">\
<html>\
        <head>\
                <meta http-equiv="Content-Type" 
content="text/html;charset=utf-8" >\
                <title>BidiX.info - TiddlyWiki UploadPlugin - Store 
script</title>\
        </head>\
        <body>\
                <p>\
                <p>store.php V 1.6.1\
                <p>[email protected]\
                <p>&nbsp;</p>\
                <p>&nbsp;</p>\
                <p>&nbsp;</p>\
                <p align="center">This page is designed to upload a <a 
href="http://
www.tiddlywiki.com/">TiddlyWiki<a>.</p>\
                <p align="center">for details see : <a href="http://
TiddlyWiki.bidix.info/#HowToUpload">TiddlyWiki.bidix.info/
#HowToUpload<a>.</p>    \
        </body>\
</html>\
<?php\
exit;\
\}\
\
/*\
 * POST Request\
 */\
         \
// Recursive mkdir\
function mkdirs($dir) \{\
        if( is_null($dir) || $dir === "" )\{\
                return false;\
        \}\
        if( is_dir($dir) || $dir === "/" )\{\
                return true;\
        \}\
        if( mkdirs(dirname($dir)) )\{\
                return mkdir($dir);\
        \}\
        return false;\
\}\
\
function toExit() \{\
        global $DEBUG, $filename, $backupFilename, $options;\
        if ($DEBUG) \{\
                echo ("\\nHere is some debugging info : \\n");\
                echo("\\$filename : $filename \\n");\
                echo("\\$backupFilename : $backupFilename \\n");\
                print ("\\$_FILES : \\n");\
                print_r($_FILES);\
                print ("\\$options : \\n");\
                print_r($options);\
\}\
exit;\
\}\
\
function ParseTWFileDate($s) \{\
        // parse date element\
        preg_match ( '/^(\\d\\d\\d\\d)(\\d\\d)(\\d\\d)\\.(\\d\\d)(\\d\\d)(\\d\
\d)/', $s , $m );\
        // make a date object\
        $d = mktime($m[4], $m[5], $m[6], $m[2], $m[3], $m[1]);\
        // get the week number\
        $w = date("W",$d);\
\
        return array(\
                'year' => $m[1], \
                'mon' => $m[2], \
                'mday' => $m[3], \
                'hours' => $m[4], \
                'minutes' => $m[5], \
                'seconds' => $m[6], \
                'week' => $w);\
\}\
\
function cleanFiles($dirname, $prefix) \{\
        $now = getdate();\
        $now['week'] = date("W");\
\
        $hours = Array();\
        $mday = Array();\
        $year = Array();\
        \
        $toDelete = Array();\
\
        // need files recent first\
        $files = Array();\
        ($dir = opendir($dirname)) || die ("can't open dir '$dirname'");\
        while (false !== ($file = readdir($dir))) \{\
                if (preg_match("/^$prefix/", $file))\
        array_push($files, $file);\
    \}\
        $files = array_reverse($files);\
        \
        // decides for each file\
        foreach ($files as $file) \{\
                $fileTime = ParseTWFileDate(substr($file,strpos($file, 
'.')+1,strrpos
($file,'.') - strpos($file, '.') -1));\
                if (($now['year'] == $fileTime['year']) &&\
                        ($now['mon'] == $fileTime['mon']) &&\
                        ($now['mday'] == $fileTime['mday']) &&\
                        ($now['hours'] == $fileTime['hours']))\
                                continue;\
                elseif (($now['year'] == $fileTime['year']) &&\
                        ($now['mon'] == $fileTime['mon']) &&\
                        ($now['mday'] == $fileTime['mday'])) \{\
                                if (isset($hours[$fileTime['hours']]))\
                                        array_push($toDelete, $file);\
                                else \
                                        $hours[$fileTime['hours']] = true;\
                        \}\
                elseif  (($now['year'] == $fileTime['year']) &&\
                        ($now['mon'] == $fileTime['mon'])) \{\
                                if (isset($mday[$fileTime['mday']]))\
                                        array_push($toDelete, $file);\
                                else\
                                        $mday[$fileTime['mday']] = true;\
                        \}\
                else \{\
                        if (isset($year[$fileTime['year']][$fileTime['mon']]))\
                                array_push($toDelete, $file);\
                        else\
                                $year[$fileTime['year']][$fileTime['mon']] = 
true;\
                \}\
        \}\
        return $toDelete;\
\}\
\
function replaceJSContentIn($content) \{\
        if (preg_match ("/(.*?)<!--DOWNLOAD-INSERT-FILE:\\"(.*?)\\"--><script\
\s+type=\\"text\\/javascript\\">(.*)/ms", $content,$matches)) \{\
                $front = $matches[1];\
                $js = $matches[2];\
                $tail = $matches[3];\
                if (preg_match ("/<\\/script>(.*)/ms", $tail,$matches2)) \{     
        \
                        $tail = $matches2[1];\
                \}\
                $jsContent = "<script type=\\"text/javascript\\" 
src=\\"$js\\"></
script>";\
                $tail = replaceJSContentIn($tail);\
                return($front.$jsContent.$tail);\
        \}\
        else\
                return $content;\
\}\
\
// Check if file_uploads is active in php config\
if (ini_get('file_uploads') != '1') \{\
   echo "Error : File upload is not active in php.ini\\n";\
   toExit();\
\}\
\
// var definitions\
$uploadDir = './';\
$uploadDirError = false;\
$backupError = false;\
$optionStr = $_POST['UploadPlugin'];\
$optionArr=explode(';',$optionStr);\
$options = array();\
$backupFilename = '';\
$filename = $_FILES['userfile']['name'];\
$destfile = $filename;\
\
// get options\
foreach($optionArr as $o) \{\
        list($key, $value) = split('=', $o);\
        $options[$key] = $value;\
\}\
\
// debug activated by client\
if ($options['debug'] == 1) \{\
        $DEBUG = true;\
\}\
\
// authenticate User\
if (($AUTHENTICATE_USER)\
        && ((!$options['user']) || (!$options['password']) || ($USERS[$options
['user']] != $options['password']))) \{\
        echo "Error : UserName or Password do not match \\n";\
        echo "UserName : [".$options['user']. "] Password : [". $options
['password'] . "]\\n";\
        toExit();\
\}\
\
\
\
// make uploadDir\
if ($options['uploaddir']) \{\
        $uploadDir = $options['uploaddir'];\
        // path control for uploadDir   \
    if (!(strpos($uploadDir, "../") === false)) \{\
        echo "Error: directory to upload specifies a parent folder";\
        toExit();\
        \}\
        if (! is_dir($uploadDir)) \{\
                mkdirs($uploadDir);\
        \}\
        if (! is_dir($uploadDir)) \{\
                echo "UploadDirError : $uploadDirError - File NOT uploaded 
!\\n";\
                toExit();\
        \}\
        if ($uploadDir\{strlen($uploadDir)-1\} != '/') \{\
                $uploadDir = $uploadDir . '/';\
        \}\
\}\
$destfile = $uploadDir . $filename;\
\
// backup existing file\
if (file_exists($destfile) && ($options['backupDir'])) \{\
        if (! is_dir($options['backupDir'])) \{\
                mkdirs($options['backupDir']);\
                if (! is_dir($options['backupDir'])) \{\
                        $backupError = "backup mkdir error";\
                \}\
        \}\
        $backupFilename = $options['backupDir'].'/'.substr($filename, 0,
strrpos($filename, '.'))\
                                
.date('.Ymd.His').substr($filename,strrpos($filename,'.'));\
        rename($destfile, $backupFilename) or ($backupError = "rename error");
\
        // remove overmuch backup\
        if ($CLEAN_BACKUP) \{\
                $toDelete = cleanFiles($options['backupDir'], substr($filename, 
0,
strrpos($filename, '.')));\
                foreach ($toDelete as $file) \{\
                        $f = $options['backupDir'].'/'.$file;\
                        if($DEBUG) \{\
                                echo "delete : 
".$options['backupDir'].'/'.$file."\\n";\
                        \}\
                        unlink($options['backupDir'].'/'.$file);\
                \}\
        \}\
\}\
\
// move uploaded file to uploadDir\
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $destfile)) \
{\
        if ($FOLD_JS) \{\
                // rewrite the file to replace JS content\
                $fileContent = file_get_contents ($destfile);\
                $fileContent = replaceJSContentIn($fileContent);\
                if (!$handle = fopen($destfile, 'w')) \{\
                 echo "Cannot open file ($destfile)";\
                 exit;\
            \}\
            if (fwrite($handle, $fileContent) === FALSE) \{\
                echo "Cannot write to file ($destfile)";\
                exit;\
            \}\
            fclose($handle);\
        \}\
    \
        chmod($destfile, 0644);\
        if($DEBUG) \{\
                echo "Debug mode \\n\\n";\
        \}\
        if (!$backupError) \{\
                echo "0 - File successfully loaded in " .$destfile. "\\n";\
        \} else \{\
                echo "BackupError : $backupError - File successfully loaded in 
" .
$destfile. "\\n";\
        \}\
        echo("destfile:$destfile \\n");\
        if (($backupFilename) && (!$backupError)) \{\
                echo "backupfile:$backupFilename\\n";\
        \}\
        $mtime = filemtime($destfile);\
        echo("mtime:$mtime");\
\} \
else \{\
        echo "Error : " . $_FILES['error']." - File NOT uploaded !\\n";\
\
\}\
toExit();\
//\}\}\}\
?>}

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"TiddlyWiki" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/TiddlyWiki?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to