Note: You are currently viewing documentation for Moodle 1.9. Up-to-date documentation for the latest stable version is available here: Beginning Administration 1 FAQ.

Beginning Administration 1 FAQ: Difference between revisions

From MoodleDocs
 
(86 intermediate revisions by 4 users not shown)
Line 3: Line 3:
Most of the questions and answers here can be located somewhere in the Forums, or the Moodle Docs, if you want to spend the time looking for them. All this FAQ does is concentrate some of the questions you may be asking in one place. Thanks to all the unknowing and unknown contributors.  
Most of the questions and answers here can be located somewhere in the Forums, or the Moodle Docs, if you want to spend the time looking for them. All this FAQ does is concentrate some of the questions you may be asking in one place. Thanks to all the unknowing and unknown contributors.  


This page has grown a bit quickly and is now over sized. So second and third pages have been added named [[Beginning Administration 2 FAQ|Beginning Administration 2 FAQ]] [[Beginning Administration 3 FAQ|Beginning Administration 3 FAQ]]. A number of questions relating to specific, popular, areas have now been moved. One is the [[Front Page FAQ]] and the [[Xampp Installer FAQ]], others will probably follow.  
This page has grown a bit quickly and is now over sized. So more pages have been added named [[Beginning Administration 2 FAQ]] and [[Beginning Administration 3 FAQ]]. A number of questions relating to specific, popular, areas have now been moved. One is the [[Front Page FAQ]] and the [[Xampp Installer FAQ]], others will probably follow.  


For the moment, ALL answers here relate specifically to '''Moodle 1.9.''x''''' and some earlier versions (e.g. 1.7 and 1.8). Moodle 2.0 questions are not answered here.  
For the moment, ALL answers here relate specifically to '''Moodle 1.9.''x''''' and some earlier versions (e.g. 1.7 and 1.8). Moodle 2.0 questions are not answered here.  
For more specific information about Moodle 2.0.x try [https://docs.moodle.org/20/en/Beginning_Moodle_2.0_Administration Beginning Moodle 2.0 Administration].


__TOC__
__TOC__
Line 12: Line 14:
[[Xampp Installer FAQ]]
[[Xampp Installer FAQ]]


==I want to create a new site in Moodle, but which version should I use? 1.9 or 2.0. ==
===I want to create a new site in Moodle, but which version should I use? 1.9. or 2.0. ===
You should use Moodle 1.9. We will not see a production version of [[Roadmap|Moodle 2.0]] much before July 2010, at best. There will be many changes made to the Application Program Interface and underlying structure in Moodle 2.0.   The development work is going to take a while. If you have some good PHP skills you might want to consider getting involved in this Open Source project.  
In December 2010 this is a tough call. If you pick 1.9.9 to .11, you should probably plan on upgrading to Moodle 2.0 after it has been out a while (say June 2011). There were many changes made to the Moodle's User Interface and underlying structure in 2.0. In any major new release there are always minor things that are discovered even after extensive testing.


Of course if you want to play with Moodle 2.0 and watch it develop, [http://download.moodle.org/download.php/moodle/moodle-latest.zip download it], try it but do not make it your production Moodle site :)
Remember that moodle.org has switched to 2.0 and so have a few other large sites including demo.moodle.net, so it is stable. In the longer run, a new site might focus upon adding content to their new 2.0 site, stay away from any customization of underlying code and plan on upgrading every month or so. Then having used it for a while, consider what tweaks to make or add.


==What do I really need to know about HTML, Javascript, PHP and MySQL or networking to be a successful Administrator?==
There is also the "old dog, new tricks" effect to considerDo you want to start with one interface and code set, then switch later and have to relearn some things? You maybe fine, but what about your teachers? They are less likely to notice changes in a 2.0 build update and we can guarantee that going from 1.9x to 2.x is a big change that will not escape their notice.
Not a lotCertainly you should know something about HTML and there are lots of web sites and books on this subject. Generally speaking in Moodle, Javascript is a mid-level skill and, PHP and MySQL are advanced skills. If you are really interested in gaining more skills in these programs, there are lots of free to low cost to professional certification paths to follow. There are web sites around that will get you started with minimal cost. There are plenty of books as well. Individualized professional coaching/mentoring/consulting or certified training in several areas is obviously more expensive. Understanding Networking will also come in handy.  The more your site is customized from the standard Moodle package, the more you may need these skills.


==What tools do I need to use in the Administration of my Moodle==
:UPDATE: May 2011. Moodle 2.0.3 has been released and v2.1 has been announced for release in the near future. It is now obvious that new installations of v2.0.x are considerably more advantageous to the User than beginning with a v1.9.12 then changing at some, usually unspecified, time in the future.
Different environments will allow to you use some different tools, but essentially, you can get away with just a text editor. There are any number of text editors, but use one that can save the files in a UTF-8 format. Notepad++, TextPad are two that come to mind and there are a lot more, but not Windows' native Notepad.


==Should I use a test site to try things out?==
===How can I get an overview of using Moodle?===
As a general tip, if you have a production site, that is a site that is being used by students or other enrolled persons on a regular basis, then it is a good investment to have a test site. This test site is used by you, the administrator, alone. In it, you can replicate your production site or any aspect of it, by taking a backup of something from your production site and restoring it to your test site. Trial something in this test Moodle first. This way you will always be on top of changes before you make them. If something goes wrong with your test site, it is simple to reinstall.
There are any number of books about Moodle 1.9.x. Perhaps the most immediately useful book is the [[Using Moodle book]] by Helen Foster and Jason Cole. While aimed more at using rather than administration, this book is a handy tool to work out many things about how the administration of your Moodle impacts on how Moodle can be used.  


For some circumstances, the [http://download.moodle.org/windows/ Windows Xaampp installer] may be a better choice for a Windows environment, and while it may not replicate specific server environmental problems, it is handy for a lot of other things. As an alternative, in either a Linux or Windows environment, if you need something specific, once your site is working, back it up and then restore it under a different folder in the web root. As long as no-one knows it is there, and there are no public links to it, then you are the only one who may access it. Of course, you can always makes sure that no-one but you can enter the test site. You may not want to do that on one server - due to hosting constraints, so you may chose to create a separate installation on a different computer, which does make it easier to wreck your test site then restore it quickly.  
===What do I really need to know about HTML, Javascript, PHP and MySQL or networking to be a successful Administrator?===
Not a lot.  Certainly you should know something about HTML and there are lots of web sites and books on this subject. Generally speaking in Moodle, Javascript is a mid-level skill and, PHP and MySQL are advanced skills.  If you are really interested in gaining more skills in these programs, there are lots of free to low cost to professional certification paths to follow. There are web sites around that will get you started with minimal cost. There are plenty of books as well. Individualized professional coaching/mentoring/consulting or certified training in several areas is obviously more expensive. Understanding Networking will also come in handy.  The more your site is customized from the standard Moodle package, the more you may need these skills.


[[#top|Top]]
===What tools do I need to use in the Administration of my Moodle===
Different environments will allow to you use some different tools, but essentially, you can get away with just a text editor. There are any number of text editors, but use one that can save the files in a UTF-8 format. For Windows users, Notepad++, TextPad are two that come to mind and there are a lot more, but not Windows' native Notepad. ('''Windows Notepad''' is not fully UTF-8 compliant. Some of its own characters will not be read properly in PHP and Notepad may add additional spaces and end of line or end of file markers that will not be rendered in PHP or rendered badly, crashing the whole site.)


==How do I set Moodle & Moodledata folder permissions in the server environment.==
===Installation on a Windows or a Linux server ===
You should already have gone through the [[Installing Moodle]] guide and this should have provided you with some information. However, due to the manner in which Moodle has been created it tends to concentrate on the LAMP configuration.  
There are a great many Moodle documentation pages on this subject. The available Xampp/Windows version of Moodle is workable, but for a larger production (a site with many users, courses and volume)  Linux is the strongly recommended operating system. The simple truth is that it is easier to mirror and load share using Linux than Windows. Building and learning how to use Moodle is easier in Windows. However in the longer term, a Linux based installation is far stronger and thus a much better learning environment to start with for any Administrator. It is suggested that if you can, set up a Moodle in both environments, Ubuntu, SuseLinux and Debian are now relatively easy to install and configure. As for Windows, XP seems more stable than Vista. Windows 7 is reputed to be better than both earlier versions, but as Microsoft is intent on "automating" everything, it appears to be placing more stubborn blocks into the path of the installation of many useful applications. Use of Home versions in MS operating systems is not recommended for any production site.  


The other question is how can I set permissions in IIS.  
Linux is probably better at things like clustering and mirroring. [[Moodle Clusters]] or [[Mirroring Moodle]] are two pages which are developing information about these topics that are useful for larger or more active sites.


This [http://moodle.org/mod/forum/discuss.php?d=107382 discussion] in the Using Moodle Forum about this topic could be really valuable for IIS users.
===Which leads me to which version of Moodle should I use then?===
Obviously the constant updating processes available for Moodle should provide the opportunity for you to keep your Moodle current. But the reality is that we do not always have time to update to the latest release (consider reconstructing tweaks or going from 1.9 to 2.0). If you schedule regular updates, say one per month or one per quarter, this is still somewhat intensive. Most Moodle sites would be perfectly serviceable with a twice annual update, but it is entirely up to you, as the administrator, or the Moodle owners. It is a decision that should be made right at the outset of setting up the first Moodle. The best bet is to use the latest stable version, however often you want to update it.  See the "I want to create a new site in Moodle, but which version should I use? 1.9. or 2.0." question.


==We have an older version of Moodle, but as a new Administrator, I want to upgrade to the latest version, but how?==
===Should I use a test site to try things out?===
Practice first before [[Upgrading]] a production site! There are risks in upgrading any software package. Also, as a new administrator, you may not completely understand what has been installed on your production Moodle site.  A combination of upgrading a version 1.6 site to 1.9 that has 6 [[Contributed code]] modules added to it can be a complicated process.  
As a general tip, if you have a production site, that is a site that is being used by students or other enrolled persons on a regular basis, then it is a good investment to have a test site. This test site is used by you, the administrator, alone. In it, you can replicate your production site or any aspect of it, by taking a backup of something from your production site and restoring it to your test site. Try out something in this test Moodle first. This way you will always be on top of changes before you make them. If something goes wrong with your test site, it is simple to reinstall.


The quickest way would be to [[Site backup|backup]] your current database, install the latest version onto a separate computer and restore the backup to it. You can then test your new Moodle, easily and safely. When satisfied that it is working as it should, migrate the new Moodle to the server, replacing your old Moodle. Do the next new administrator a favor and document your process and changes you made.
For some circumstances, the [http://download.moodle.org/windows/ Windows Xaampp installer] may be a better choice for a Windows environment, and while it may not replicate specific server environmental problems, it is handy for a lot of other things. As an alternative, in either a Linux or Windows environment, if you need something specific, once your site is working, back it up and then restore it under a different folder in the web root. As long as no-one knows it is there, and there are no public links to it, then you are the only one who may access it. Of course, you can always make sure that no-one but you can enter the test site. You may not want to do that on one server - due to hosting constraints, so you may chose to create a separate installation on a different computer, which does make it easier to wreck your test site then restore it quickly.  
 
One issue will be problems in the database. Some tables may have incrementally changed so restoring may become a lot more difficult than it should be. It may be less difficult in the long run to create a new site, then back up each course from the old site and restore each course to the new site. Or if you have a knowledge of SQL, you may be able to create your own SQL queries to rewrite the older tables and store the data in a format the new database can accept.


[[#top|Top]]
[[#top|Top]]


===Why am I just not getting how Permissions and Roles work?===
A new site administrator's understanding of [[How permissions are calculated|permissions]] and [[Manage roles|Roles]] is usually based on their networking environment knowledge. In short: we log in, we are given a set of permission based on that log in and these permissions determine what we can do in a single [[Context|context]]. This "linear" explanation is based on what we see, not what really happens, of course.


In Moodle, [[Role permissions|permissions]] are also known as "capabilities" and they reside with the [[Manage roles|Role]] and can be dependent upon the users location/activity in Moodle. The log-in ID does not carry any traditional network permissions with it, but an initial Role. So stop worrying about trying to learn about permissions, concentrate on the [[Manage roles|Role]] and how that works. Once you have a solid grasp of each Role, then you can worry about setting permissions. 


Roles are [[Context|context]] based. The best advice is DO NOT assign any roles from the Front Page. If you assign a Role in the Front Page, that Role is assigned to every part of the site. A best practice is to only assign Roles within the context of a Course or a Category.


==I have a valid web address, but as I install, I am getting an error message telling me I do not.==
===What different roles can apply to users as they log in and move around inside the Moodle?===  
Chances are that it is the config.php file that is pointing in the wrong direction. If you can use a text editor that can save in a UTF-8 format, open the config.php file and it may read something like:
Only one of many roles (a set of permissions) can be given to a users at log in. As the user moves to different pages, they can specifically or generically (if they belong to a group of users) be assigned new roles for that just that area, or ''context''.  Here are some concepts that might help.


  $CFG->wwwroot  = 'localhost';
'''Before anyone logs in''' to the Moodle, sitting at the log in page, or public front page, depending how you have set your Moodle up, they should have the role of '''"Guest"'''.  It is possible to change this but be careful.
  $CFG->dirroot  = 'var/www/Moodle/moodle';
  $CFG->dataroot  = 'var/www/Moodle/moodledata';
 
when it should look something like:


    $CFG->wwwroot = <nowiki>'http://yourwebsiteURL';</nowiki>
In Moodle, '''when anyone''' with a user name and password logs into the Moodle, they become an "'''Authenticated User'''".  How they are authenticated is different from their Role. At this point the contextual nature of Roles kicks in and determines permissions for every user, everywhere a User goes in the site a ''context'' is applied.  
    $CFG->dirroot = '/home/yourAccountName/public_html';
    $CFG->dataroot = '/home/yourAccountName/moodledata';
   
If you are being hosted then the provider may allow you access to something like CPanel in a Linux environment.  


This will also repair the error message:
For [[#All students are enrolling in every course|reasons explained below]], you may want your Users to become "'''Students'''" while in the '''Front Page'''. (Be careful here, read on below before assigning roles.)
  The 'Data Directory' you specified could not be found or created.  
  Either correct the path or create that directory manually.


In a Windows environment it may look something like:
When they click to go to a Category page, they revert to an "'''Authenticated User'''". Once there, their User Name is scanned and their permissions are calculated and if they have permissions, they can have sufficient rights to be a "'''Teacher'''" or a "'''Course Creator'''" or even an "'''Administrator'''", but for most people it will probably remain at '''Authenticated User'''.
    $CFG->wwwroot = <nowiki>'http://yourwebsiteURL';</nowiki>
    $CFG->dirroot  = 'C:\Moodle\server\moodle';
    $CFG->dataroot  = 'C:\Moodle\server/moodledata';


==Site migrated to new ISP, now can't login and getting the error message "Unfortunately, cookies are currently not enabled in your browser"==
When they click to go to a Course, they may have the rights to be an "'''Administrator'''", a "'''Course Creator'''", a "'''Teacher'''" or a "'''Student'''" in that Course.
With all these kinds of errors the first thing to do is to check the config.php file. Make sure that the file is pointing to the right places. It should look something like:


  $CFG->wwwroot = <nowiki>'http://yourwebsiteURL'</nowiki>;
This does not mean they have any of those rights in any other Category or Course. The Role assigned in one context may not apply in any other context.
  $CFG->dirroot = '/home/yourAccountName/public_html';
  $CFG->dataroot = '/home/yourAccountName/moodledata';
 
Another possible cause of this problem is that sessions are not configured properly on the server. You can test this by calling the script <nowiki>http://yourserver/moodle/lib/session-test.php</nowiki>.


If your server is on shared hosting check that you have sufficient disk space quota. An insufficient quota will prevent new sessions being created and nobody will be able to login.
===How can I be sure I am assigning Roles correctly?===
[[Assign_roles|Assigning Roles]] should be based purely on the page or activity (the [[Context|context]]) and the role you want that person(s) to play.  


Carefully check the permissions in your 'moodledata' area. The web server needs to be able to write to the 'sessions' subdirectory.
The first question is "what do I want this person to be able to do?" For most people using the Moodle, the obvious Role will be that of Student. Others will need to be [[Course_creator|Course Creators]] or [https://docs.moodle.org/en/Category:Teacher Teachers]. Some Teachers will be Course Creators. Really, the first question should be "what do I want this person to be able to do HERE?"


Finally, check the bottom of the config.php file. Make sure there is nothing after the <nowiki>?></nowiki>, this means no characters, no spaces, no carriage returns.
Essentially, if you get it wrong, then your courses can be wrecked. The basic rules are simple, "Do not assign a role in the Front Page." and "Assign roles in the context of the course or Category."
:'''Be aware''', if you create an Administrator role in a [[Add/edit_course_categories|Category]], that will apply across all [[Add/edit_course_categories#Adding_sub_course_categories|sub-Categories]] and [[Course|Courses]] in that Category. It will not apply to ANY other Category, sub-Categories or Courses. If someone is assigned the Role of "Teacher" at a Category level, that Role will apply in ALL sub-Categories and Courses in that Category.


[[#top|Top]]
[[#top|Top]]


===I changed some Roles and things have gone terribly wrong, I cannot log in as Administrator===
Chances are you have changed your Administrator Role, happens all the time and is easily fixed - if you have kept backups of your database. This problem is often caused by changing the default role for all users. Sometimes Administrators include themselves as part of the Role change - thus the problem. Open phpMyAdmin, and if you do not have it installed then do so, but if you are on a network use the full version, not the Moodle plugin - for your own security. Open the database and go to mdl_user table. Check for your own id and make sure you know your own id number. Go to the mdl_role_assignments table and look for YOUR USER ID. Be careful here, your user id number is not the same as the id number in this table, it should be showing in the userid field. If it is there, and the fields "roleid" and "contextid" should both read 1. If not then edit the row to show those values.


If your id is not there then try these values starting from the "id" field on a line you know is no longer used or add a line into the table using the "Insert" page:
id = (lastid + 1 - this may be an auto-incrementing field so be careful) 1, 1, (your userid number here) 0, 0, 0,  (timevalue here, just copy the previous line's value), 0, (copy enrol value from previous line), 0. The entire line should read something like: 21, 1, 1, 352, 0, 0, 0, 1276947170, 0, manual, 0)


== I want to use a dedicated server for Moodle, but how reliable is Moodle together with EasyPHP?==
NOTE: This worked in a limited test on a Windows server and with XP, and should work if you write the SQL Insert statement correctly. The emphasis is on the "should", because this has not been tested, yet, on a large production server. This is why you need a backup of your database - in case this goes wrong. No guarantee here, sorry.  
See [[Installation guide for Windows using EasyPHP]].   A dedicated machine for your production Moodle site is a good idea. EasyPHP, Fantastico and even XAMPP are designed to get a site up and running quickly but will still need to be adjusted for a production site.  


Another option for an intranet (classroom or school based network) clean install on a new XP Pro server would be one of the [http://download.moodle.org/windows/ Windows Installer Package].  This package uses the [[XAMPP]] installer to automatically install and configure Apache Server, MySQL and PHP. Once installation is complete and setup and running, all you may need do is to edit the config.php file to show your IP address.  
The only other, and admittedly faster, alternative is to delete the existing database and use your backup.


The XAMPP installer package may reduce effective security on an public internet site, so be careful with it. The other issue is the the XAMPP installer is resource hungry, so it does not easily handle a lot of users simultaneously. However unless your Students are whiz-kids, and really know their PHP and MySQL, one of the Windows package should be secure enough for your intranet.
===How do I set the maximum upload file size limit?===
This is probably the most frequently asked question, and the answer is not that straightforward. The changes that need be made are the same in all versions of Moodle, just in different OS' they need be made in different places. Upload file sizes are restricted in a number of ways and each one in this list restricts the following ones:
  Server level
  Moodle site level
  Course level
  Activity level


Perhaps the best place to find this information is at [https://docs.moodle.org/en/File_upload_size File upload size] There is a full explanation for a number of different OSs but there are a few missing.


This is a contentious issue, mainly because you might think that it should be set inside the Moodle. Unfortunately, this is not so, these are environment issues that need to be set in the server and PHP folders, Moodle cannot work outside itself.


==I have a lot of Staff, how can I enter them as Users quickly?==
===The previous answer is OK if you control the server, but I am hosted, what can I do to override limitations set by my Host?===
You can set up a bulk upload of Users, irrespective of what their Role in the Moodle will be by using a flat file. It is simple to do, but like a lot of things with PHP, it must be exactly right or it does not work.  
Before doing this, consult with your host, they may have very different ideas about what your Moodle should be permitted - try not to tread on their toes - they may get annoyed at you breaching your user conditions. In an Apache server, you can create a file called '''.htaccess''' which can allow you to override some of the limitations set by PHP on your Moodle. Be aware that this file only applies to your Moodle, and nothing else. Your host will often place a .htaccess file into your root folder which will usually read something like:
  deny from all
  AllowOverride None
These are security related, so there is no need to delete them or otherwise edit them. To overwrite set values in the hosts php.ini file, you may want to use:
  php_value upload_max_filesize 512M
  php_value post_max_size 512M
To overwrite boolean or logical settings use:
  php_flag register_globals off
or
  php_flag register_globals 0


# Create a new file in a text editor (but not Windows Notepad, it does not render the UTF-8 character set.)
Something similar can be done in IIS, but it is a lot more complex.  
# Add fields in this order, and they must be separated by a comma, username, password, firstname, lastname, email
# Save the file in a UTF-8 format, this is apparently safer than other formats and use the file extension *.csv
# Go to Administration > Users > Accounts > Upload users
# Browse for the file and click "Upload Users".


  As an alternative, you can also use MS-Excel, saving the file as a csv.
Thanks Muano


As the file is uploaded, Moodle will do validity checks on usernames, passwords and email addresses. Ensure that all fields have legal characters, no underscores or slashes.  
===We have an older version of Moodle, but as a new Administrator, I want to upgrade to the latest version, but how?===
Practice first before [[Upgrading]] a production site! There are risks in upgrading any software package. Also, as a new administrator, you may not completely understand what has been installed on your production Moodle site.  A combination of upgrading a version 1.6 site to 1.9 that has 6 [[Contributed code]] modules added to it can be a complicated process. Upgrading from Moodle 1.9.x to Moodle 2.0 may be a little more problematic, there are a large number of database changes, as well as a number of changes to backup files that may cause some heartburn for people.  


If you want to make sure that Users will change their passwords as soon as they log-on, use the same password for all Users - "changeme" (without the quotes, of course).  
The quickest way would be to [[Site backup|backup]] your current database, and see [[#What_is_the_best_way_of_updating_my_Moodle.3F|"What is the best way of updating my Moodle?"]]. Remember though, do the next new administrator a favor and document your process and all changes you make.


If you want to make sure that Users enter the correct email address, then you can leave this field blank, in 1.9.+ only apparently.   
One issue will be problems in the database. Some tables may have incrementally changed so restoring may become a lot more difficult than it should be. It may be less difficult in the long run to create a new site, then back up each course from the old site and restore each course to the new site. Or if you have a knowledge of SQL, you may be able to create your own SQL queries to rewrite the older tables and store the data in a format the new database can accept.
 
For more information you can look at [[Upload users]].
 
==Can I issue fake email addresses for Users who have no email when I upload the User file?==
Yes. A generic fake email like aname@myhome.org is acceptable in Moodle. The address must look like an email address format. Further information on alternatives can be found at the [https://docs.moodle.org/en/No_Email No Email] page. (And a quiet aside "How about gmail or yahoo mail or even hotmail", is anyone without an email today?)


[[#top|Top]]
[[#top|Top]]


==How do I give my users a dummy email when I'm using LDAP?==
===What is the best way of updating my Moodle?===
When using Active Directory you can map the email address field to "userPrincipalName". This will populate your users email address with their AD username@yourdomain email.
There is no "best way" as such, there are a number of different methods. Perhaps the simplest way is to recognise that you can utilize the "connectionless" nature of Moodle. (Simple as in this should work anywhere, but you may want to check out other methods as well.)
 
Moodle comes in three parts
#The Moodle database - managed by one of four DBMS like MySQL, Postgres, MSSQL or Oracle.
#The moodledata folder - which holds uploaded files
#The Moodle code folder.  


==We are getting the message: ERROR: Could not instantiate mail function.==
'''When updating your Moodle, first things first, backup everything in each of these folders - just in case.'''
If you are using a Linux distro, then ensure that your SMTP server is working as it should. If you are using Windows then you have to install an SMTP server. This server can be any valid Windows mail server. Mercury mail is one such. If you need to then you can go to your email program and look at its preferences and see where it is pointing to use this same mail server.  


==The email server is working, but the emails are not getting where they should be going==
If you are not sure how to do this, look at the [[Backup_and_restore_FAQ|Backup and Restore FAQ]] before doing anything.  
Usually your firewall is preventing emails getting out. Check to make sure the firewall has an exception rule set. If it does, then check your virus software, McAfee's has a small firewall that can prevent emails being sent.  


==When I try to select some pages in the Admin block, I get a "Timed Out" message and the screen reverts to the login page==
Download and install the new version of Moodle to a folder that will not overwrite your existing Moodle, giving the database another name. Check that it works. You may want to think about putting it onto a different drive, or different computer even.  
This could be caused by many things. The best guess, would be that the installation process made some mistakes.  For example, a MySQL, PHP or Apache setting or combination of settings were not configured correctly for the site. If it is a new site, it is probably better to not waste time on trying to find out which line in a config file needs to be changed, but first try and reinstall.


==Why am I just not getting how Permissions and Roles work?==
'''Copy the config.php''' file of your older installation, to a place it will not be overwritten during the update.
A new site administrator's understanding of [[How permissions are calculated|permissions]] and [[Manage roles|Roles]] is usually based on their networking environment knowledge. In short: we log in, we are given a set of permission based on that log in and these permissions determine what we can do in a single [[Context|context]]. This "linear" explanation is based on what we see, not what really happens, of course.  
Copy the code base of the new installation into the folder of your older production site, returning the copied older Moodle's config.php file.  


In Moodle, [[Role permissions|permissions]] are also known as "capabilities" and they reside with the [[Manage roles|Role]] and can be dependent upon the users location/activity in Moodle. The log-in ID does not carry any traditional network permissions with it, but an initial Role. So stop worrying about trying to learn about permissions, concentrate on the [[Manage roles|Role]] and how they work. Once you have a solid grasp of that, then you can worry about setting permissions.  
Things that can go wrong:
*You unzip the new installation and when installing it overwrites your existing moodledata folder. Copy back your earlier version, overwriting the newer.
*You overwrite the existing database. Restore your backup.    


Roles are [[Context|context]] based. The best advice is DO NOT assign any roles from the Front Page. If you assign a Role in the Front Page, that Role is assigned to every part of the site. A best practice is to only assign Roles within the context of a Course or a Block.
Suggested by [[User:Tim Hunt|Tim Hunt]].


==What different roles can apply to users as they log in and move around inside the Moodle?==
===How to diagnose a Hacked Moodle Site?===
Only one of many roles (a set of permissions) can be given to a users at log in.  As the user moves to different pages, they can be specifically or be generically (they belong to a group of users) assigned new roles for that just that area.  Here are some concepts that might help.
 
'''Before anyone logs in''' to the Moodle, sitting at the log in page, or public front page, depending how you have set your Moodle up, they should have the role of '''"Guest"'''.  It is possible to change this but be careful.
 
In Moodle, '''when anyone''' with a user name and password logs into the Moodle, they become an "'''Authenticated User'''".  How they are authenticated is different from their Role.
 
For [[#All students are enrolling in every course|reasons explained below]], you may want your Users to become "'''Students'''" while in the '''Front Page'''. (Be careful here, read on below before assigning roles.)
 
When they click to go to a Category page, they revert to an "'''Authenticated User'''". Once there, their User Name is scanned and their permissions are calculated and if they have permissions, they can have sufficient rights to be a "'''Teacher'''" or a "'''Course Creator'''" or even an "'''Administrator'''".
 
When they click to go to a Course, they may have the rights to be an "'''Administrator'''", a "'''Course Creator'''", a "'''Teacher'''" or a "'''Student'''" in that Course.
 
This does not mean they have any of those rights in any other page or Course.
 
[[#top|Top]]
 
==How can I be sure I am assigning Roles correctly?==
[[Assign_roles|Assigning Roles]] should be based purely on the page or activity (the [[Context|context]]) and the role you want that person(s) to play.
 
The first question is "what do I want this person to be able to do?" For most people using the Moodle, the obvious Role will be that of Student. Others will need to be [[Course_creator|Course Creators]] or [https://docs.moodle.org/en/Category:Teacher Teachers]. Some Teachers will be Course Creators. Really, the first question should be "what do I want this person to be able to do HERE?"
 
Essentially, if you get it wrong, then your courses can be wrecked. The basic rules are simple, "Do not assign a role in the Front Page." and "Assign roles in the context of the course or page."
:Be aware, if you create an Administrator role in a [[Add/edit_course_categories|Category]], that will apply across all [[Add/edit_course_categories#Adding_sub_course_categories|sub-Categories]] and [[Course|Courses]] in that Category. It will not apply to ANY other Category, sub-Categories or Courses. If someone is assigned the Role of "Teacher" at a Category level, that Role will apply in ALL sub-Categories and Courses in that Category.
 
==How to diagnose a Hacked Moodle Site?==
This item is not designed to frighten anyone about Moodle security, just sometimes a hacker can be a little better than our protective systems. Like any popular web based program, Moodle is in a constant game of "catch-up" with latest hacker techniques. Please check the [[Security]] page for more tips and procedures.
This item is not designed to frighten anyone about Moodle security, just sometimes a hacker can be a little better than our protective systems. Like any popular web based program, Moodle is in a constant game of "catch-up" with latest hacker techniques. Please check the [[Security]] page for more tips and procedures.


Line 184: Line 163:
For more information, go to [[Hacked_site_recovery|Hacked site recovery page]]. This offers more detailed information.
For more information, go to [[Hacked_site_recovery|Hacked site recovery page]]. This offers more detailed information.


==How do I set the maximum upload file size limit?==
===How do I set Moodle & Moodledata folder permissions in the server environment.===
This is probably the most frequently asked question, and the answer is not that straightforward. The changes that need be made are the same in all versions of Moodle, just in different OS' they need be made in different places. Upload file sizes are restricted in a number of ways and each one in this list restricts the following ones:
You should already have gone through the [[Installing Moodle]] guide and this should have provided you with some information. However, due to the manner in which Moodle has been created, the documentation tends to concentrate on the LAMP configuration.  
  Server level
  Moodle site level
  Course level
  Activity level


Perhaps the best place to find this information is at [https://docs.moodle.org/en/File_upload_size File upload size] There is a full explanation for a number of different OSs but there are a few missing.  
The other question is how can I set permissions in IIS.  


This is a contentious issue, mainly because you might think that it should be set inside the Moodle. Unfortunately, this is not so, these are environment issues that need to be set in the server and PHP folders, Moodle cannot work outside itself.
This [http://moodle.org/mod/forum/discuss.php?d=107382 discussion] in the Using Moodle Forum about this topic could be really valuable for IIS users.
 
[[#top|Top]]


==Installation on a Windows or a Linux server ==
===Help! My site broke - How do I fix it?===
A great many Moodle documentation pages are on this subject. The Windows version of Moodle is workable, but for a larger production (a site with many users, courses and volume)  Linux is the strongly recommended operating system. The simple truth is that it is easier to mirror and load share using Linux than Windows. Building and learning how to use Moodle is easier in Windows. However in the longer term, a Linux based installation is far stronger and thus a much better learning environment to start with for any Administrator. It is suggested that if you can, set up a Moodle in both environments, Ubuntu, SuseLinux and Debian are now relatively easy to install and configure. As for Windows, XP seems more stable than Vista. Use a Home versions in either MS operating system is not recommended.
 
Linux is probably better at things like clustering and mirroring. [[Moodle Clusters]] or [[Mirroring Moodle]] are two pages which are developing information about these topics that are useful for larger or more active sites.
 
==I upgraded Ubuntu from 8.10 to 9.04 and have lost my Moodle - where did it go?==
In this situation, usually, you will get the Apache "It works" message but when you try to access the Moodle, it will come back with an error message telling you it cannot locate the Moodle. You can try to locate the Moodle yourself, and update the various files, like config.php:
 
  unset($CFG);
 
  $CFG->dbtype = 'mysql';
  $CFG->dbhost = 'localhost';
  $CFG->dbname = 'moodle';
  $CFG->dbuser = 'moodleuser';
  $CFG->dbpass = 'xxxx';
  $CFG->prefix = 'mdl_';
 
  $CFG->dbpersist = "false";
 
  $CFG->wwwroot = '<nowiki>http://10.90.56.110</nowiki>';
  $CFG->dirroot = '/var/www/moodle';
  $CFG->dataroot = '/var/moodledata';
  $CFG->directorypermissions = 00777;
  $CFG->admin = 'admin';
  require_once("$CFG->dirroot/lib/setup.php")
 
Reedit and change wwwroot to to what your IP address is, even if it has not changed, re-enter the path.
 
Check the actual location and make sure the dirroot and dataroot are also correct.
Try it and if it works, then you have successfully re-configured the Moodle, but do not count on it. This method seems pretty hit and miss.
 
It may be faster and safer to just reinstall the Moodle, so make sure you have a backup prepared to go if needed.
 
==I have just taken over a Moodle and now can't log in to it as Admin and others get the message "Your session has timed out. Please login again.".==
You should already know the version of Moodle you are using, (if you are not sure then go to Notifications and in the bottom left corner of the centre block you will see the Version + (build number)).
 
If you are using v1.6, you may want to consider dropping the site entirely. Reinstalling a newer version should solve the essential problem. v1.6 experimented with cookieless sessions which work by appending a session id to either every url or to hidden form fields in html pages. This allowed php to track every session and record it. The problem is that that data is stored in the moodledata folder, and that takes up space which eventually takes up so much room the server will object and deny people access. To immediately solve this problem enter the /moodledata/sessions folder and delete all the "session" files.
 
If this is the problem, then you may be getting messages from your ISP telling you that you are now over quota, so you need to reduce the amount of filespace that your Moodle is occupying. 
 
If you are already using a later version of Moodle, then you should be communicating with your ISP to see what the problem may be. Alternatively, you may be able to access the log files, in which case you may be able to query each element of the Moodle. 
It is also recommended that you constantly update your Moodle site. You can start considering this option using [[CVS_for_Administrators | CVS]] files.
 
[[#top|Top]]
 
==Help! My site broke - How do I fix it?==
Moodle was made to be broken - seriously. Quite often these statements are made:   
Moodle was made to be broken - seriously. Quite often these statements are made:   
:::My site has suddenly broken, only the header will display on any page except for user login.
:::My site has suddenly broken, only the header will display on any page except for user login.
Line 255: Line 183:
# Overwrite the database from your [[Site backup]].  
# Overwrite the database from your [[Site backup]].  


Alternatively, you can just restore from your [[Site backup]].  
Alternatively, you can do a [[Site restore]] from your [[Site backup]].  


This is why you must backup regularly. The bigger the database, the more frequent the [[Site backup|backups]] required.   
This is why you must backup regularly. The bigger the database, the more frequent the [[Site backup|backups]] required.   
Line 261: Line 189:
'''TIP''': Keep two Moodles, one public and one private. Do things to the private Moodle and test them out. If it works then you can employ the same change in your public Moodle. If it doesn't then you have not damaged anything. It is much easier to deliberately break and repair or re-install your small private Moodle than to try and do it to a public Moodle.
'''TIP''': Keep two Moodles, one public and one private. Do things to the private Moodle and test them out. If it works then you can employ the same change in your public Moodle. If it doesn't then you have not damaged anything. It is much easier to deliberately break and repair or re-install your small private Moodle than to try and do it to a public Moodle.


Another reason a site is broken is because it has been [https://docs.moodle.org/en/Beginning_Administration_2_FAQ#How_to_diagnose_a_Hacked_Moodle_Site.3F hacked], which is another issue.
Another reason a site is broken is because it has been [[#How_to_diagnose_a_Hacked_Moodle_Site.3F|hacked]], which is another issue.


==All students are enrolling in every course==
===I am having trouble with blocks, I can't see them, what do I do?===
Your site is probably assigning a student role initially to a new users. You might want to change this setting. This is another example of the contextual nature of [[Roles]].  
The [[Blocks FAQ]] will provide many answers here and what follows may not necessarily be the right answer. Log into your Moodle as normal and then type this:
<nowiki>http://www.mysitename.org/]admin/blocks.php</nowiki>
into the address bar. This will take you directly to the blocks page and you will be able to reset any hidden block.


First check to see who is assigned the student role at the site level. Go to the site administration block > users > permissions > assign system roles - there should be nobody in the student role. Move users you do not want to have student role (be able to enroll in most courses), out of this role into the Potential user column.
===I have a valid web address, but as I install, I am getting an error message telling me I do not.===
Chances are that it is the config.php file that is pointing in the wrong direction. If you can use a text editor that can save in a UTF-8 format, open the config.php file and it may read something like:


To change the default user role, in the site administration block > users > permissions > user policies, look for "Default role for all users".  Make sure the default user in "[[Authenticated user]]" and not "[[Student]]".
  $CFG->wwwroot  = 'localhost';
  $CFG->dirroot  = 'var/www/Moodle/moodle';
  $CFG->dataroot  = 'var/www/Moodle/moodledata';
 
when it should look something like:


Confused about why this is logical?  We have been checking the default user setting for the entire Moodle site. In MoodleSpeak, the site context always applies until another context specifically changes the role. Remember, students take courses.  Some sites want all new users to be able to be automatically enrolled in all site courses.  So from the first moment that users logs into these sites,  the site role default is that of student.  Other Moodle sites want to be more selective. Thus they might assign the default site role as "authenticated user".  This will allow each course to determine the new role (probably a student role) when the user tries to enter it.  
    $CFG->wwwroot = <nowiki>'http://yourwebsiteURL';</nowiki>
    $CFG->dirroot = '/home/yourAccountName/public_html';
    $CFG->dataroot = '/home/yourAccountName/moodledata';
   
If you are being hosted then the provider may allow you access to something like CPanel in a Linux environment.  


In correcting the student issue, you may have created another problem.: your Site news forum has disappeared.  See below.
This will also repair the error message:
  The 'Data Directory' you specified could not be found or created.  
  Either correct the path or create that directory manually.


[[#top|Top]]
In a Windows environment it may look something like:
    $CFG->wwwroot = <nowiki>'http://yourwebsiteURL';</nowiki>
    $CFG->dirroot  = 'C:\Moodle\server\moodle';
    $CFG->dataroot  = 'C:\Moodle\server/moodledata';


==I want to hide the Latest News Block from anyone not logged in.==
===I can not login and get the error message "Unfortunately, cookies are currently not enabled in your browser"===
This example will work for all [[:Category:Block|blocks]].
With all these kinds of errors the first thing to do is to check the config.php file. Make sure that the file is pointing to the right places. It should look something like:


#Log in as an Administrator then turn editing on
  $CFG->wwwroot = <nowiki>'http://yourwebsiteURL'</nowiki>;
# Click on the assign roles icon (usually the first icon and looks like [[Image:Assignrolescmf01.gif]] one of these) in the header of the [[Block|block]] to be hidden, in this case the [[Latest News block]]. This takes you to the Assign roles page.
  $CFG->dirroot = '/home/yourAccountName/public_html';
# Click the "Override permissions" tab.
  $CFG->dataroot = '/home/yourAccountName/moodledata';
# Select the role "Guest".
 
# Reset the capability moodle/block:view to '''prevent'''.
Another possible cause of this problem is that sessions are not configured properly on the server. You can test this by calling the script <nowiki>http://yourserver/moodle/lib/session-test.php</nowiki>.
# Click the "Save changes" button.


This should hide the block from everyone until they have logged in.
If your server is on shared hosting check that you have sufficient disk space quota. An insufficient quota will prevent new sessions being created and nobody will be able to login.


== My site news forum disappeared from the front page for students==
Carefully check the permissions in your 'moodledata' area. The web server needs to be able to write to the 'sessions' subdirectory.  
The site news forum disappeared from the [[Front Page]] after a successful log in for your students. You have forced all logged in users to be subscribed via the forum settings.  Check to see if some of all of your users are no longer "students" or teachers in the [[Context]] of the Front Page.  


Go to ''Site Administration block > Front Page > [[Front Page settings]]> Default frontpage role''.  Change to '''Student'''.  
Finally, check the bottom of the config.php file. Make sure there is nothing after the <nowiki>?></nowiki>, '''this means no characters, no spaces, no carriage returns'''. If the ?> is on line 26 and the debug error says config.php line 28, you have extra lines. 


This affects a number of things.  Please note that a [[Roles|role]] in the Front page is like a role in a course and it does not apply to other courses.
[[#top|Top]]


==The Staff at my School want to see what other Staff Members are doing. Can I set this up easily?==
===I have just taken over a Moodle and now can't log in to it as Admin and others get the message "Your session has timed out. Please login again.".===
Yes, you can. In many instances a lot of Staff Members will want to look at what their colleagues are doing and make sure they are working within whatever academic parameters need to be met. While this may seem intrusive for a lot of teachers, it is one way of getting a cross-fertilization of ideas across  different curricular areas.
You should already know the version of Moodle you are using, (if you are not sure then go to Notifications and in the bottom left corner of the centre block you will see the Version + (build number)).  


However, as the number of courses grow, this can mean that the teachers "My courses" block can grow to a ridiculous length. To get around this issue, set up a special user that is enrolled in all courses. If all Staff know the User ID they can access other courses easily. To limit this though, you may consider using a different special users for each subject area or discipline or category.  Make that ID available only to those people delivering courses in that subject, discipline, or category.  You might also create a special role for that user to limit their activities.
If you are using v1.6, you may want to consider dropping the site entirely. Reinstalling a newer version should solve the essential problem. v1.6 experimented with cookieless sessions which work by appending a session id to either every url or to hidden form fields in html pages. This allowed php to track every session and record it. The problem is that that data is stored in the moodledata folder, and that takes up space which eventually takes up so much room the server will object and deny people access. To immediately solve this problem enter the /moodledata/sessions folder and delete all the "session" files.  


==I just migrated my Moodle to a server and now no-one can see it. What happened?==
If this is the problem, then you may be getting messages from your ISP telling you that you are now over quota, so you need to reduce the amount of filespace that your Moodle is occupying. 
Usually the issue is a simple one and can be fixed with your text editor:


#Open your text editor and navigate to your config.php file in the Moodle root.
If you are already using a later version of Moodle, then you should be communicating with your ISP to see what the problem may be. Alternatively, you may be able to access the log files, in which case you may be able to query each element of the Moodle.  
#Look for the line <nowiki>$CFG->wwwroot = 'http://localhost/';</nowiki>
#Change the "localhost" to your server IP address, e.g.<nowiki>$CFG->wwwroot = 'http://10.45.78.165/';</nowiki>
#Save and exit your file editor


This should now work. What it should also do is to update all your internal links, courses, images and everything to reflect the IP address.  
It is also recommended that you constantly update your Moodle site. You can start considering this option using [[CVS_for_Administrators | CVS]] files.  
 
==I am having trouble with adding blocks now and do not know why ==
Occasionally you may want to upgrade PHP or install a later version of Apache or IIS or something else. When this happens, some compatibility issues can arise. For example, the blocks problem can occur if you install PHP v5.3.0, but if you install the PHP v5.2.9 add-on it works fine.


[[#top|Top]]
[[#top|Top]]


==I hid the administration menu from the blocks page and now I have no way of un-hiding any module blocks back on because I can't get to the admin menu to unhide anything.==
===All students are enrolling in every course===
Log into your Moodle and then type this:
Your '''site''' is probably assigning a student role initially to all new users. You might want to change this setting. This is another example of the contextual nature of [[Roles]] and what is discussed here is in the context of the '''''entire site'''''.  
  <nowiki>(http://www.mysitename.org/)admin/blocks.php</nowiki>
into the address bar. This will take you directly to the blocks page and you will be able to unhide anything.


==How do I restore an older graphics course that is way over the file upload limit?==
First check to see who is assigned the student role at the site level. Go to the site administration block > users > permissions > assign system roles - there should be nobody in the student role. Move users you do not want to have student role (be able to enroll in all courses in the entire site), out of this role into the Potential user column.
This happens when you do not want to change the maxfile upload on your Moodle site but you do have access to the moodledata folder via FTP or some other program.
There are two answers here, but they are in fact the same thing, just executed in different ways.
*'''If you DO NOT know the settings or Moodle ID of the course here is the quick and dirty:'''


FTP your backup zip file to the site files folder, which is normally the folder named "1" inside the '''Moodledata''' folder.
To change the default user role, in the site '''Administration > Users > Permissions > User Policies''', look for "Default role for all users".  Make sure the default user is "[[Authenticated user]]" and not "[[Student]]".
Go to Site '''Administration > Front Page > Front Page restore''' and go through the restore options.  


Restore the course to a new course and remember to delete the zip file from the front page files or from the '''moodledata/1''' folder.   All files in the site files folder are visible to all UsersIt is a good idea to backup your new course right away.
Confused about why this is logical? We have been checking the default user setting for the '''entire Moodle site''. In MoodleSpeak, the site context always applies until another context specifically changes the role. Remember, students take courses.  Some sites want all new users to be able to be automatically enrolled in all site coursesSo from the first moment that users logs into these sites,  the site role default is that of student.  Other Moodle sites want to be more selective. Thus they might assign the default site role as "authenticated user".  This will allow each course to determine the new role (probably a student role) when the user tries to enter it.  


*'''Longer method with detailed instructions:'''
In correcting the student issue, you may have created another problem - your Site news forum has disappeared.  See below.


Log into Moodle and create a new course, Ideally this will have the same course settings as the old course. Have your backup of the old course or the zip file of all the images you want to upload handy.
[[#top|Top]]


Enter the new course and go to '''Course Administration > Files'''. Inside Files, upload a new small file.  This will create a new folder in your moodledata with the same ## as your course idReturn to the course homepageNote the course ID in your browser address bar.  For example purposes the course ID is 42. You can minimize your Moodle window and return to your FTP program. 
=== My site news forum disappeared from the front page for students===
The site news forum disappeared from the [[Front Page]] after a successful log in for your studentsYou have forced all logged in users to be subscribed via the forum settingsCheck to see if some or all of your users are no longer "students" or teachers in the [[Context]] of the Front Page.  


Connect to your Moodle via FTP and look for the Moodledata folder. Inside Moodledata look for the folder with the course id, 42 in our example (/moodledata/42). Copy your zip file or what ever you want there.  
Go to ''Site Administration block > Front Page > [[Front Page settings]]> Default frontpage role''.  Change to '''Student'''. Remember this is a change to a different area of Moodle than that described above. This change occurs specifically in the context of the front page, and is not a site wide change.  


In your Moodle, look in your files folderYou will see the files you transfered there.  If it is a course backup, you can select the restore link right now, or unzip a file that contains all your images and sub-directories.
This affects a number of thingsPlease note that the default [[Roles|front page role]] is like a role in a course and it does not apply to other courses. Ths is different to the [[#All_students_are_enrolling_in_every_course| assigned roles]] in the front page.


As you can see, if you are dealing with several courses, you really just need one course to dump the large zip files via FTP or your favorite file transfer program.  Then you merely have to go to the file folder and restore the course backups to a new course.  You might want to go back and delete the course backups that you transfered so students do not see them.
===I just migrated my Moodle to a server and now no-one can see it. What happened?===
Usually the issue is a simple one and can be fixed with your text editor and a special program:


==Students seem to be disappearing from courses and I cannot see why?==
#Open your text editor and navigate to your config.php file in the Moodle root.
Sometimes we forget that if Students can enroll themselves, they can also unenroll themselves. Go to Administration > Users > Permissions > [https://docs.moodle.org/en/admin/roles/manage Define roles] and select Students. In Permissions reset "Unassign own roles moodle/role:unassignself" to Prevent.
#Look for the line <nowiki>$CFG->wwwroot = 'http://localhost/';</nowiki>
 
#Change the "localhost" to your server IP address, e.g.<nowiki>$CFG->wwwroot = 'http://10.45.78.165/';</nowiki>
==Which Enrollment option should I be using?==
#Save and exit your file editor
There is no easy answer here, depends on the needs of your site. [https://docs.moodle.org/en/Internal_enrolment Internal enrollments] is the default setting. This means that you enter the students onto the Users list via a flat file, or dynamically authorize them with LADP and students can be enrolled when courses are created by Teachers or Course Creators, or later when they are given acccess via [https://docs.moodle.org/en/enrolment_key enrollment keys] or if there is no security key, they can enroll anytime.    
#Run the ./admin/replace.php because your image links will still point to localhost
 
##So put <nowiki>http://localhost/</nowiki> in the first box (your old address)
For a commercial site, you need to develop a strategy depending on what it is you are offering. The PayPal and Authorize.Net can set up the payment end of things, and an [https://docs.moodle.org/en/auth/email email based self-enrollment], using Captcha, becomes viable.
##Put <nowiki>http://10.45.78.165/</nowiki> in the second box (your new address)
 
##After you are sure the above is exactly correct, click on "Yes, do it now".
Here is a [http://moodle.org/mod/forum/discuss.php?d=90 discussion] about this topic. As you can see, this is an ongoing issue.  


==When I created courses, no summary icon becomes visible in the Categories screen.==
This should now work. What it should also do is to update all your internal links, courses, images and everything to reflect the IP address.
Usually, in any web page, if an image does not display it is not where it is supposed to be. In Moodle this is not necessarily so, but because a number of settings have been reset and images are not included. when this happens the theme is using custom pix (in theme config.php $THEME->custompix = true; ) and even if the image file does exist it is not necessarily used unless Administration ► Miscellaneous ► Experimental ► Smartpix feature is enabled. Seems that some themes require different settings than others.


==Why can I not seem to get files to overwrite older files? Some do not delete either, we just keep getting older files, why?==
The same process is used when you have installed to your own server and want to make it available to your Users, but if you have no courses, then you do not have to run the replace.php file.
This can be a bit of a nuisance, but it has to do with Moodle itself. Moodle relies heavily on the cache, and files that are uploaded, downloaded and so on are placed into the cache. You can try emptying the cache, before you delete a file or delete then empty the cache, then upload the newer version. Or, delete the older file, then change the name of the newer file, upload that and make reference to the newer file. Assignment uploads overwrite the existing file in Moodle, but the cache gets in the way there too. Upload a file using version numbers, the older file will be overwritten.  


==See also==
===See also===
*[[Beginning Administration 2 FAQ|Beginning Administration FAQs - 2]]
*[[Beginning Administration 2 FAQ | Beginning Administration FAQs - 2]]
*[[Beginning Administration 3 FAQ|Beginning Administration FAQs - 3]]
*[[Beginning Administration 3 FAQ | Beginning Administration FAQs - 3]]
*[[Beginning Administration 4 FAQ|Beginning Administration FAQs - 4]]
*[[Beginning Administration 4 FAQ | Beginning Administration FAQs - 4]]
*[[Front_Page_FAQ|Front Page FAQ]]
*[[Installation FAQ]]
*[[Installation FAQ]]
*[[Administration FAQ]]
*[[Administration FAQ]]
*[[Xampp Installer FAQ]]
*[[Xampp Installer FAQ]]
*[https://docs.moodle.org/20/en/Beginning_Moodle_2.0_Administration | Beginning Moodle 2.0 Administration]


*[[:Category:Administrator | Index of all Administrator-related pages]]
*[[:Category:Administrator | Index of all Administrator-related pages]]


[[Category:FAQ]]
[[Category:FAQ]]

Latest revision as of 00:37, 18 January 2012

There is always an element of frustration at the beginning of taking on a Moodle. For many of us, we are employed to do something else, but fall into this. While we have some knowledge or skills, we can often be stumped by the simple things. Not because we are not skilled, just we do not understand enough of the jargon surrounding Moodle to make it work for us. What many people have found is that they are pushing against a door that was never shut. Not a good analogy perhaps, but it does describe what can happen when we begin Administration of a Moodle.

Most of the questions and answers here can be located somewhere in the Forums, or the Moodle Docs, if you want to spend the time looking for them. All this FAQ does is concentrate some of the questions you may be asking in one place. Thanks to all the unknowing and unknown contributors.

This page has grown a bit quickly and is now over sized. So more pages have been added named Beginning Administration 2 FAQ and Beginning Administration 3 FAQ. A number of questions relating to specific, popular, areas have now been moved. One is the Front Page FAQ and the Xampp Installer FAQ, others will probably follow.

For the moment, ALL answers here relate specifically to Moodle 1.9.x and some earlier versions (e.g. 1.7 and 1.8). Moodle 2.0 questions are not answered here.

For more specific information about Moodle 2.0.x try Beginning Moodle 2.0 Administration.

Beginning Administration 2 FAQ

Xampp Installer FAQ

I want to create a new site in Moodle, but which version should I use? 1.9. or 2.0.

In December 2010 this is a tough call. If you pick 1.9.9 to .11, you should probably plan on upgrading to Moodle 2.0 after it has been out a while (say June 2011). There were many changes made to the Moodle's User Interface and underlying structure in 2.0. In any major new release there are always minor things that are discovered even after extensive testing.

Remember that moodle.org has switched to 2.0 and so have a few other large sites including demo.moodle.net, so it is stable. In the longer run, a new site might focus upon adding content to their new 2.0 site, stay away from any customization of underlying code and plan on upgrading every month or so. Then having used it for a while, consider what tweaks to make or add.

There is also the "old dog, new tricks" effect to consider. Do you want to start with one interface and code set, then switch later and have to relearn some things? You maybe fine, but what about your teachers? They are less likely to notice changes in a 2.0 build update and we can guarantee that going from 1.9x to 2.x is a big change that will not escape their notice.

UPDATE: May 2011. Moodle 2.0.3 has been released and v2.1 has been announced for release in the near future. It is now obvious that new installations of v2.0.x are considerably more advantageous to the User than beginning with a v1.9.12 then changing at some, usually unspecified, time in the future.

How can I get an overview of using Moodle?

There are any number of books about Moodle 1.9.x. Perhaps the most immediately useful book is the Using Moodle book by Helen Foster and Jason Cole. While aimed more at using rather than administration, this book is a handy tool to work out many things about how the administration of your Moodle impacts on how Moodle can be used.

What do I really need to know about HTML, Javascript, PHP and MySQL or networking to be a successful Administrator?

Not a lot. Certainly you should know something about HTML and there are lots of web sites and books on this subject. Generally speaking in Moodle, Javascript is a mid-level skill and, PHP and MySQL are advanced skills. If you are really interested in gaining more skills in these programs, there are lots of free to low cost to professional certification paths to follow. There are web sites around that will get you started with minimal cost. There are plenty of books as well. Individualized professional coaching/mentoring/consulting or certified training in several areas is obviously more expensive. Understanding Networking will also come in handy. The more your site is customized from the standard Moodle package, the more you may need these skills.

What tools do I need to use in the Administration of my Moodle

Different environments will allow to you use some different tools, but essentially, you can get away with just a text editor. There are any number of text editors, but use one that can save the files in a UTF-8 format. For Windows users, Notepad++, TextPad are two that come to mind and there are a lot more, but not Windows' native Notepad. (Windows Notepad is not fully UTF-8 compliant. Some of its own characters will not be read properly in PHP and Notepad may add additional spaces and end of line or end of file markers that will not be rendered in PHP or rendered badly, crashing the whole site.)

Installation on a Windows or a Linux server

There are a great many Moodle documentation pages on this subject. The available Xampp/Windows version of Moodle is workable, but for a larger production (a site with many users, courses and volume) Linux is the strongly recommended operating system. The simple truth is that it is easier to mirror and load share using Linux than Windows. Building and learning how to use Moodle is easier in Windows. However in the longer term, a Linux based installation is far stronger and thus a much better learning environment to start with for any Administrator. It is suggested that if you can, set up a Moodle in both environments, Ubuntu, SuseLinux and Debian are now relatively easy to install and configure. As for Windows, XP seems more stable than Vista. Windows 7 is reputed to be better than both earlier versions, but as Microsoft is intent on "automating" everything, it appears to be placing more stubborn blocks into the path of the installation of many useful applications. Use of Home versions in MS operating systems is not recommended for any production site.

Linux is probably better at things like clustering and mirroring. Moodle Clusters or Mirroring Moodle are two pages which are developing information about these topics that are useful for larger or more active sites.

Which leads me to which version of Moodle should I use then?

Obviously the constant updating processes available for Moodle should provide the opportunity for you to keep your Moodle current. But the reality is that we do not always have time to update to the latest release (consider reconstructing tweaks or going from 1.9 to 2.0). If you schedule regular updates, say one per month or one per quarter, this is still somewhat intensive. Most Moodle sites would be perfectly serviceable with a twice annual update, but it is entirely up to you, as the administrator, or the Moodle owners. It is a decision that should be made right at the outset of setting up the first Moodle. The best bet is to use the latest stable version, however often you want to update it. See the "I want to create a new site in Moodle, but which version should I use? 1.9. or 2.0." question.

Should I use a test site to try things out?

As a general tip, if you have a production site, that is a site that is being used by students or other enrolled persons on a regular basis, then it is a good investment to have a test site. This test site is used by you, the administrator, alone. In it, you can replicate your production site or any aspect of it, by taking a backup of something from your production site and restoring it to your test site. Try out something in this test Moodle first. This way you will always be on top of changes before you make them. If something goes wrong with your test site, it is simple to reinstall.

For some circumstances, the Windows Xaampp installer may be a better choice for a Windows environment, and while it may not replicate specific server environmental problems, it is handy for a lot of other things. As an alternative, in either a Linux or Windows environment, if you need something specific, once your site is working, back it up and then restore it under a different folder in the web root. As long as no-one knows it is there, and there are no public links to it, then you are the only one who may access it. Of course, you can always make sure that no-one but you can enter the test site. You may not want to do that on one server - due to hosting constraints, so you may chose to create a separate installation on a different computer, which does make it easier to wreck your test site then restore it quickly.

Top

Why am I just not getting how Permissions and Roles work?

A new site administrator's understanding of permissions and Roles is usually based on their networking environment knowledge. In short: we log in, we are given a set of permission based on that log in and these permissions determine what we can do in a single context. This "linear" explanation is based on what we see, not what really happens, of course.

In Moodle, permissions are also known as "capabilities" and they reside with the Role and can be dependent upon the users location/activity in Moodle. The log-in ID does not carry any traditional network permissions with it, but an initial Role. So stop worrying about trying to learn about permissions, concentrate on the Role and how that works. Once you have a solid grasp of each Role, then you can worry about setting permissions.

Roles are context based. The best advice is DO NOT assign any roles from the Front Page. If you assign a Role in the Front Page, that Role is assigned to every part of the site. A best practice is to only assign Roles within the context of a Course or a Category.

What different roles can apply to users as they log in and move around inside the Moodle?

Only one of many roles (a set of permissions) can be given to a users at log in. As the user moves to different pages, they can specifically or generically (if they belong to a group of users) be assigned new roles for that just that area, or context. Here are some concepts that might help.

Before anyone logs in to the Moodle, sitting at the log in page, or public front page, depending how you have set your Moodle up, they should have the role of "Guest". It is possible to change this but be careful.

In Moodle, when anyone with a user name and password logs into the Moodle, they become an "Authenticated User". How they are authenticated is different from their Role. At this point the contextual nature of Roles kicks in and determines permissions for every user, everywhere a User goes in the site a context is applied.

For reasons explained below, you may want your Users to become "Students" while in the Front Page. (Be careful here, read on below before assigning roles.)

When they click to go to a Category page, they revert to an "Authenticated User". Once there, their User Name is scanned and their permissions are calculated and if they have permissions, they can have sufficient rights to be a "Teacher" or a "Course Creator" or even an "Administrator", but for most people it will probably remain at Authenticated User.

When they click to go to a Course, they may have the rights to be an "Administrator", a "Course Creator", a "Teacher" or a "Student" in that Course.

This does not mean they have any of those rights in any other Category or Course. The Role assigned in one context may not apply in any other context.

How can I be sure I am assigning Roles correctly?

Assigning Roles should be based purely on the page or activity (the context) and the role you want that person(s) to play.

The first question is "what do I want this person to be able to do?" For most people using the Moodle, the obvious Role will be that of Student. Others will need to be Course Creators or Teachers. Some Teachers will be Course Creators. Really, the first question should be "what do I want this person to be able to do HERE?"

Essentially, if you get it wrong, then your courses can be wrecked. The basic rules are simple, "Do not assign a role in the Front Page." and "Assign roles in the context of the course or Category."

Be aware, if you create an Administrator role in a Category, that will apply across all sub-Categories and Courses in that Category. It will not apply to ANY other Category, sub-Categories or Courses. If someone is assigned the Role of "Teacher" at a Category level, that Role will apply in ALL sub-Categories and Courses in that Category.

Top

I changed some Roles and things have gone terribly wrong, I cannot log in as Administrator

Chances are you have changed your Administrator Role, happens all the time and is easily fixed - if you have kept backups of your database. This problem is often caused by changing the default role for all users. Sometimes Administrators include themselves as part of the Role change - thus the problem. Open phpMyAdmin, and if you do not have it installed then do so, but if you are on a network use the full version, not the Moodle plugin - for your own security. Open the database and go to mdl_user table. Check for your own id and make sure you know your own id number. Go to the mdl_role_assignments table and look for YOUR USER ID. Be careful here, your user id number is not the same as the id number in this table, it should be showing in the userid field. If it is there, and the fields "roleid" and "contextid" should both read 1. If not then edit the row to show those values.

If your id is not there then try these values starting from the "id" field on a line you know is no longer used or add a line into the table using the "Insert" page: id = (lastid + 1 - this may be an auto-incrementing field so be careful) 1, 1, (your userid number here) 0, 0, 0, (timevalue here, just copy the previous line's value), 0, (copy enrol value from previous line), 0. The entire line should read something like: 21, 1, 1, 352, 0, 0, 0, 1276947170, 0, manual, 0)

NOTE: This worked in a limited test on a Windows server and with XP, and should work if you write the SQL Insert statement correctly. The emphasis is on the "should", because this has not been tested, yet, on a large production server. This is why you need a backup of your database - in case this goes wrong. No guarantee here, sorry.

The only other, and admittedly faster, alternative is to delete the existing database and use your backup.

How do I set the maximum upload file size limit?

This is probably the most frequently asked question, and the answer is not that straightforward. The changes that need be made are the same in all versions of Moodle, just in different OS' they need be made in different places. Upload file sizes are restricted in a number of ways and each one in this list restricts the following ones:

 Server level
 Moodle site level
 Course level
 Activity level

Perhaps the best place to find this information is at File upload size There is a full explanation for a number of different OSs but there are a few missing.

This is a contentious issue, mainly because you might think that it should be set inside the Moodle. Unfortunately, this is not so, these are environment issues that need to be set in the server and PHP folders, Moodle cannot work outside itself.

The previous answer is OK if you control the server, but I am hosted, what can I do to override limitations set by my Host?

Before doing this, consult with your host, they may have very different ideas about what your Moodle should be permitted - try not to tread on their toes - they may get annoyed at you breaching your user conditions. In an Apache server, you can create a file called .htaccess which can allow you to override some of the limitations set by PHP on your Moodle. Be aware that this file only applies to your Moodle, and nothing else. Your host will often place a .htaccess file into your root folder which will usually read something like:

 deny from all
 AllowOverride None

These are security related, so there is no need to delete them or otherwise edit them. To overwrite set values in the hosts php.ini file, you may want to use:

 php_value upload_max_filesize 512M
 php_value post_max_size 512M 

To overwrite boolean or logical settings use:

 php_flag register_globals off

or

 php_flag register_globals 0

Something similar can be done in IIS, but it is a lot more complex.

Thanks Muano

We have an older version of Moodle, but as a new Administrator, I want to upgrade to the latest version, but how?

Practice first before Upgrading a production site! There are risks in upgrading any software package. Also, as a new administrator, you may not completely understand what has been installed on your production Moodle site. A combination of upgrading a version 1.6 site to 1.9 that has 6 Contributed code modules added to it can be a complicated process. Upgrading from Moodle 1.9.x to Moodle 2.0 may be a little more problematic, there are a large number of database changes, as well as a number of changes to backup files that may cause some heartburn for people.

The quickest way would be to backup your current database, and see "What is the best way of updating my Moodle?". Remember though, do the next new administrator a favor and document your process and all changes you make.

One issue will be problems in the database. Some tables may have incrementally changed so restoring may become a lot more difficult than it should be. It may be less difficult in the long run to create a new site, then back up each course from the old site and restore each course to the new site. Or if you have a knowledge of SQL, you may be able to create your own SQL queries to rewrite the older tables and store the data in a format the new database can accept.

Top

What is the best way of updating my Moodle?

There is no "best way" as such, there are a number of different methods. Perhaps the simplest way is to recognise that you can utilize the "connectionless" nature of Moodle. (Simple as in this should work anywhere, but you may want to check out other methods as well.)

Moodle comes in three parts

  1. The Moodle database - managed by one of four DBMS like MySQL, Postgres, MSSQL or Oracle.
  2. The moodledata folder - which holds uploaded files
  3. The Moodle code folder.

When updating your Moodle, first things first, backup everything in each of these folders - just in case.

If you are not sure how to do this, look at the Backup and Restore FAQ before doing anything.

Download and install the new version of Moodle to a folder that will not overwrite your existing Moodle, giving the database another name. Check that it works. You may want to think about putting it onto a different drive, or different computer even.

Copy the config.php file of your older installation, to a place it will not be overwritten during the update. Copy the code base of the new installation into the folder of your older production site, returning the copied older Moodle's config.php file.

Things that can go wrong:

  • You unzip the new installation and when installing it overwrites your existing moodledata folder. Copy back your earlier version, overwriting the newer.
  • You overwrite the existing database. Restore your backup.

Suggested by Tim Hunt.

How to diagnose a Hacked Moodle Site?

This item is not designed to frighten anyone about Moodle security, just sometimes a hacker can be a little better than our protective systems. Like any popular web based program, Moodle is in a constant game of "catch-up" with latest hacker techniques. Please check the Security page for more tips and procedures.

First thing to do is to check the config.php file in your Moodle folder. This controls the basic settings. Check for anything that is written between these two lines:

<?php /// Moodle Configuration File
 
unset($CFG);

If something is there delete it. Once it is deleted, check the file permissions and make sure that the file is owned by the administrator and is set for read only.

There are other ways Moodle has been hacked, but usually, the files targeted are the config.php and index.php. Unfortunately, sometimes all the .php files are attacked. Upgrading Moodle, backing up everything, checking permissions and folder locations are some of the things you can do to either reduce the risk or recover quickly. With a large installed base of users and an active community, most hacks are discovered and reported quickly, and solutions found.

For more information, go to Hacked site recovery page. This offers more detailed information.

How do I set Moodle & Moodledata folder permissions in the server environment.

You should already have gone through the Installing Moodle guide and this should have provided you with some information. However, due to the manner in which Moodle has been created, the documentation tends to concentrate on the LAMP configuration.

The other question is how can I set permissions in IIS.

This discussion in the Using Moodle Forum about this topic could be really valuable for IIS users.

Help! My site broke - How do I fix it?

Moodle was made to be broken - seriously. Quite often these statements are made:

My site has suddenly broken, only the header will display on any page except for user login.
As soon as anyone is logged in, only the header shows.
The site was working perfectly but not now.

Or variations on that theme.

Why these things happen is usually you have done something or changed something or someone else has done it and the site falls over. You can spend hours trying to fix it, but in most cases it is just better to dump it and start again, a lot less time consuming.

  1. Completely delete your entire Moodle, everything must go.
  2. Reinstall Moodle using exactly the same settings you started with.
  3. Overwrite the database from your Site backup.

Alternatively, you can do a Site restore from your Site backup.

This is why you must backup regularly. The bigger the database, the more frequent the backups required.

TIP: Keep two Moodles, one public and one private. Do things to the private Moodle and test them out. If it works then you can employ the same change in your public Moodle. If it doesn't then you have not damaged anything. It is much easier to deliberately break and repair or re-install your small private Moodle than to try and do it to a public Moodle.

Another reason a site is broken is because it has been hacked, which is another issue.

I am having trouble with blocks, I can't see them, what do I do?

The Blocks FAQ will provide many answers here and what follows may not necessarily be the right answer. Log into your Moodle as normal and then type this:

http://www.mysitename.org/]admin/blocks.php

into the address bar. This will take you directly to the blocks page and you will be able to reset any hidden block.

I have a valid web address, but as I install, I am getting an error message telling me I do not.

Chances are that it is the config.php file that is pointing in the wrong direction. If you can use a text editor that can save in a UTF-8 format, open the config.php file and it may read something like:

 $CFG->wwwroot   = 'localhost';
 $CFG->dirroot   = 'var/www/Moodle/moodle';
 $CFG->dataroot  = 'var/www/Moodle/moodledata';
 

when it should look something like:

   $CFG->wwwroot = 'http://yourwebsiteURL';
   $CFG->dirroot = '/home/yourAccountName/public_html';
   $CFG->dataroot = '/home/yourAccountName/moodledata';
   

If you are being hosted then the provider may allow you access to something like CPanel in a Linux environment.

This will also repair the error message:

 The 'Data Directory' you specified could not be found or created. 
 Either correct the path or create that directory manually.

In a Windows environment it may look something like:

   $CFG->wwwroot = 'http://yourwebsiteURL';
   $CFG->dirroot   = 'C:\Moodle\server\moodle';
   $CFG->dataroot  = 'C:\Moodle\server/moodledata';

I can not login and get the error message "Unfortunately, cookies are currently not enabled in your browser"

With all these kinds of errors the first thing to do is to check the config.php file. Make sure that the file is pointing to the right places. It should look something like:

  $CFG->wwwroot = 'http://yourwebsiteURL';
  $CFG->dirroot = '/home/yourAccountName/public_html';
  $CFG->dataroot = '/home/yourAccountName/moodledata';
  

Another possible cause of this problem is that sessions are not configured properly on the server. You can test this by calling the script http://yourserver/moodle/lib/session-test.php.

If your server is on shared hosting check that you have sufficient disk space quota. An insufficient quota will prevent new sessions being created and nobody will be able to login.

Carefully check the permissions in your 'moodledata' area. The web server needs to be able to write to the 'sessions' subdirectory.

Finally, check the bottom of the config.php file. Make sure there is nothing after the ?>, this means no characters, no spaces, no carriage returns. If the ?> is on line 26 and the debug error says config.php line 28, you have extra lines.

Top

I have just taken over a Moodle and now can't log in to it as Admin and others get the message "Your session has timed out. Please login again.".

You should already know the version of Moodle you are using, (if you are not sure then go to Notifications and in the bottom left corner of the centre block you will see the Version + (build number)).

If you are using v1.6, you may want to consider dropping the site entirely. Reinstalling a newer version should solve the essential problem. v1.6 experimented with cookieless sessions which work by appending a session id to either every url or to hidden form fields in html pages. This allowed php to track every session and record it. The problem is that that data is stored in the moodledata folder, and that takes up space which eventually takes up so much room the server will object and deny people access. To immediately solve this problem enter the /moodledata/sessions folder and delete all the "session" files.

If this is the problem, then you may be getting messages from your ISP telling you that you are now over quota, so you need to reduce the amount of filespace that your Moodle is occupying.

If you are already using a later version of Moodle, then you should be communicating with your ISP to see what the problem may be. Alternatively, you may be able to access the log files, in which case you may be able to query each element of the Moodle.

It is also recommended that you constantly update your Moodle site. You can start considering this option using CVS files.

Top

All students are enrolling in every course

Your site is probably assigning a student role initially to all new users. You might want to change this setting. This is another example of the contextual nature of Roles and what is discussed here is in the context of the entire site.

First check to see who is assigned the student role at the site level. Go to the site administration block > users > permissions > assign system roles - there should be nobody in the student role. Move users you do not want to have student role (be able to enroll in all courses in the entire site), out of this role into the Potential user column.

To change the default user role, in the site Administration > Users > Permissions > User Policies, look for "Default role for all users". Make sure the default user is "Authenticated user" and not "Student".

Confused about why this is logical? We have been checking the default user setting for the 'entire Moodle site. In MoodleSpeak, the site context always applies until another context specifically changes the role. Remember, students take courses. Some sites want all new users to be able to be automatically enrolled in all site courses. So from the first moment that users logs into these sites, the site role default is that of student. Other Moodle sites want to be more selective. Thus they might assign the default site role as "authenticated user". This will allow each course to determine the new role (probably a student role) when the user tries to enter it.

In correcting the student issue, you may have created another problem - your Site news forum has disappeared. See below.

Top

My site news forum disappeared from the front page for students

The site news forum disappeared from the Front Page after a successful log in for your students. You have forced all logged in users to be subscribed via the forum settings. Check to see if some or all of your users are no longer "students" or teachers in the Context of the Front Page.

Go to Site Administration block > Front Page > Front Page settings> Default frontpage role. Change to Student. Remember this is a change to a different area of Moodle than that described above. This change occurs specifically in the context of the front page, and is not a site wide change.

This affects a number of things. Please note that the default front page role is like a role in a course and it does not apply to other courses. Ths is different to the assigned roles in the front page.

I just migrated my Moodle to a server and now no-one can see it. What happened?

Usually the issue is a simple one and can be fixed with your text editor and a special program:

  1. Open your text editor and navigate to your config.php file in the Moodle root.
  2. Look for the line $CFG->wwwroot = 'http://localhost/';
  3. Change the "localhost" to your server IP address, e.g.$CFG->wwwroot = 'http://10.45.78.165/';
  4. Save and exit your file editor
  5. Run the ./admin/replace.php because your image links will still point to localhost
    1. So put http://localhost/ in the first box (your old address)
    2. Put http://10.45.78.165/ in the second box (your new address)
    3. After you are sure the above is exactly correct, click on "Yes, do it now".

This should now work. What it should also do is to update all your internal links, courses, images and everything to reflect the IP address.

The same process is used when you have installed to your own server and want to make it available to your Users, but if you have no courses, then you do not have to run the replace.php file.

See also