From 4925b9ebd4d727f42b943af8eca5e4203bf8b75b Mon Sep 17 00:00:00 2001 From: Julio Bonifacio Date: Thu, 7 Feb 2013 14:40:47 -0500 Subject: [PATCH] Correct installer permissions Refs #5863 --- main/install/install.lib.php | 84 +++++++++++++++++++++++++++++++++--- 1 file changed, 77 insertions(+), 7 deletions(-) diff --git a/main/install/install.lib.php b/main/install/install.lib.php index 35da8317f3..14083b26be 100755 --- a/main/install/install.lib.php +++ b/main/install/install.lib.php @@ -1212,7 +1212,7 @@ function display_requirements($installType, $badUpdatePath, $updatePath = '', $u $course_dir = api_get_path(SYS_COURSE_PATH).$course_attempt_name; //Just in case - @unlink($course_dir.'/test.txt'); + @unlink($course_dir.'/test.php'); @rmdir($course_dir); $perms_dir = array(0777, 0755, 0775, 0770, 0750, 0700); @@ -1231,18 +1231,24 @@ function display_requirements($installType, $badUpdatePath, $updatePath = '', $u } $fil_perm_verified = 0666; - + $file_course_test_was_created = false; + if (is_dir($course_dir)) { foreach ($perms_fil as $perm) { - $r = @touch($course_dir.'/test.txt',$perm); + if ($file_course_test_was_created == true) { + break; + } + $r = @touch($course_dir.'/test.php',$perm); if ($r === true) { $fil_perm_verified = $perm; - break; + if (check_course_script_interpretation($course_dir, $course_attempt_name, 'test.php')) { + $file_course_test_was_created = true; + } } } } - @unlink($course_dir.'/test.txt'); + @unlink($course_dir.'/test.php'); @rmdir($course_dir); $_SESSION['permissions_for_new_directories'] = $_setting['permissions_for_new_directories'] = $dir_perm_verified; @@ -1251,7 +1257,7 @@ function display_requirements($installType, $badUpdatePath, $updatePath = '', $u $dir_perm = Display::label('0'.decoct($dir_perm_verified), 'info'); $file_perm = Display::label('0'.decoct($fil_perm_verified), 'info'); - $course_test_was_created = $course_test_was_created == true ? Display::label(get_lang('Yes'), 'success') : Display::label(get_lang('No'), 'warning'); + $course_test_was_created = ($course_test_was_created == true && $file_course_test_was_created == true) ? Display::label(get_lang('Yes'), 'success') : Display::label(get_lang('No'), 'warning'); echo ' @@ -1377,7 +1383,7 @@ function display_requirements($installType, $badUpdatePath, $updatePath = '', $u @chmod($checked_writable, $perm); } - if ($course_test_was_created == false) { + if ($course_test_was_created == false || $file_course_test_was_created == false) { $error = true; } @@ -2130,3 +2136,67 @@ function compare_setting_values($current_value, $wanted_value) { return Display::label($current_value_string, 'important'); } } + +function check_course_script_interpretation($course_dir, $course_attempt_name, $file = 'test.php'){ + $output = false; + //Write in file + $file_name = $course_dir.'/'.$file; + $content = '