Installation error - Invalid command 'php_flag'

Installation error - Invalid command 'php_flag'

by Fernando Salam -
Number of replies: 6

When I try to run install.php, I get a page with a 404 error.  When I check the error log, I see a message that says:

public_html/moodle/.htaccess: Invalid command 'php_flag', perhaps mis-spelled or defined by a module not included in the server configuration

Can anyone out there help me figure out what could be the cause?  Thanks!

Average of ratings: -
In reply to Fernando Salam

Re: Installation error - Invalid command 'php_flag'

by Richard Enison -

FS,

Are you sure PHP is properly installed on your server? See the PHP manual page I have attached as a MS Word doc. If you cannot read Word docs, let me know and I will post it in another form.

It would also help if we knew

  1. What version of PHP you are using
  2. What version of what web server (e.g. Apache, IIS, etc.)
  3. What version of what operating system (e.g. Linux, Windows, etc.)

RLE

In reply to Richard Enison

Re: Installation error - Invalid command 'php_flag'

by Fernando Salam -

Thanks, RLE.  I copied and pasted the CPanel info below; I'll appreciate any help you can provide.

FS

Operating system Linux
Service Status Click to View
Kernel version 2.6.17.11-grsechg
Machine Type i686
Apache version 1.3.37 (Unix)
PERL version 5.8.7
Path to PERL /usr/bin/perl
Path to sendmail /usr/sbin/sendmail
Installed Perl Modules Click to View
PHP version 4.4.4
MySQL version 4.1.21-standard
cPanel Build 10.9.0-RELEASE 7965
Theme cPanel X v2.6.0

In reply to Fernando Salam

Re: Installation error - Invalid command 'php_flag'

by Richard Enison -

FS,

  1. You have answered most of my questions with your CPanel paste. big grin
  2. The two "Click to view" links are broken, but they're not needed anyway.
  3. The info on Perl is irrelevant. Moodle doesn't use it. It would be of more interest to see if there are any "Installed PHP Modules".
  4. I can see that the version of PHP you have is okay. The versions to avoid are 5.0.x. Moodle supports PHP 4 and 5, but 5.0.x is reportedly very buggy. I have seen reports on the net of a bug associated with PHP 4 that could cause your problem, but first we need to eliminate more basic possible causes.
  5. I had sent you the PHP manual page for Apache 2.x, guessing that you had that version, the latest and probably most popular. Of course, I now know that you are using Apache, but an earlier version. So I have pasted below a portion of the PHP manual page for Apache 1.3.x. The portion I left out is the part dealing with Windows, since you are using Linux.
  6. What I need to know is this: did you (or someone else) do all the things described in the manual page excerpt shown below, particularly as it relates to the loading of the PHP module in Apache? If you have another, simpler way of establishing that you PHP module is loaded, that would be fine.

spacer.gif

Servers-Apache

This section contains notes and hints specific to Apache installs of PHP, both for Unix and Windows versions. We also have

instructions and notes for Apache 2 on a separate page.

Details of installing PHP with Apache on Unix

You can select arguments to add to the configure on line 10 below from the Complete list of configure options. The version

numbers have been omitted here, to ensure the instructions are not incorrect. You will need to replace the 'xxx' here with the

correct values from your files.

Example 3-4. Installation Instructions (Apache Shared Module Version) for PHP

1. gunzip apache_xxx.tar.gz 
2. tar -xvf apache_xxx.tar
3. gunzip php-xxx.tar.gz
4. tar -xvf php-xxx.tar
5. cd apache_xxx
6. ./configure --prefix=/www --enable-module=so
7. make
8. make install
9. cd ../php-xxx
10. Now, configure your PHP. This is where you customize your PHP with various options, like which extensions will be
enabled. Do a ./configure --help for a list of available options. In our example we'll do a simple configure with
Apache 1 and MySQL support. Your path to apxs may differ from our example.
./configure --with-mysql --with-apxs=/www/bin/apxs
11. make
12. make install If you decide to change your configure options after installation, you only need to repeat the last three steps. You only need to restart apache for the new module to take effect. A recompile of Apache is not needed. Note that unless told otherwise, 'make install' will also install PEAR, various PHP tools such as phpize, install the PHP CLI, and more. 13. Setup your php.ini file: cp php.ini-dist /usr/local/lib/php.ini You may edit your .ini file to set PHP options. If you prefer your php.ini in another location, use --with-config-file-path=/some/path in step 10. If you instead choose php.ini-recommended, be certain to read the list of changes within, as they affect how PHP behaves. 14. Edit your httpd.conf to load the PHP module. The path on the right hand side of the LoadModule statement must point to the path of the PHP module on your system. The make install from above may have already added this for you, but be sure to check. For PHP 4: LoadModule php4_module libexec/libphp4.so For PHP 5: LoadModule php5_module libexec/libphp5.so 15. And in the AddModule section of httpd.conf, somewhere under the ClearModuleList, add this: For PHP 4: AddModule mod_php4.c For PHP 5: AddModule mod_php5.c 16. Tell Apache to parse certain extensions as PHP. For example, let's have Apache parse the .php extension as PHP. You could have any extension(s) parse as PHP by simply adding more, with each separated by a space. We'll add .phtml to demonstrate. AddType application/x-httpd-php .php .phtml It's also common to setup the .phps extension to show highlighted PHP source, this can be done with: AddType application/x-httpd-php-source .phps 17. Use your normal procedure for starting the Apache server. (You must stop and restart the server, not just cause the server to reload by using a HUP or USR1 signal.)

Depending on your Apache install and Unix variant, there are many possible ways to stop and restart the server. Below are some

typical lines used in restarting the server, for different apache/unix installations. You should replace /path/to/ with the path to these applications on your systems.

Example 3-5. Example commands for restarting Apache

1. Several Linux and SysV variants: /etc/rc.d/init.d/httpd restart 2. Using apachectl scripts: /path/to/apachectl stop /path/to/apachectl start 3. httpdctl and httpsdctl (Using OpenSSL), similar to apachectl: /path/to/httpsdctl stop /path/to/httpsdctl start 4. Using mod_ssl, or another SSL server, you may want to manually stop and start: /path/to/apachectl stop /path/to/apachectl startssl

The locations of the apachectl and http(s)dctl binaries often vary. If your system has locate or whereis or which commands, these can assist you in finding your server control programs.

Different examples of compiling PHP for apache are as follows:

./configure --with-apxs --with-pgsql

This will create a libphp4.so shared library that is loaded into Apache using a LoadModule line in Apache's httpd.conf file. The PostgreSQL support is embedded into this libphp4.so library.

./configure --with-apxs --with-pgsql=shared

This will create a libphp4.so shared library for Apache, but it will also create a pgsql.so shared library that is loaded into PHP either by using the extension directive in php.ini file or by loading it explicitly in a script using the dl() function.

./configure --with-apache=/path/to/apache_source --with-pgsql

This will create a libmodphp4.a library, a mod_php4.c and some accompanying files and copy this into the src/modules/php4 directory in the Apache source tree. Then you compile Apache using --activate-module=src/modules/php4/libphp4.a and the Apache build system will create libphp4.a and link it statically into the httpd binary. The PostgreSQL support is included directly into this httpd binary, so the final result here is a single httpd binary that includes all of Apache and all of PHP.

./configure --with-apache=/path/to/apache_source --with-pgsql=shared

Same as before, except instead of including PostgreSQL support directly into the final httpd you will get a pgsql.so shared library that you can load into PHP from either the php.ini file or directly using dl().

When choosing to build PHP in different ways, you should consider the advantages and drawbacks of each method. Building as a shared object will mean that you can compile apache separately, and don't have to recompile everything as you add to, or change, PHP. Building PHP into apache (static method) means that PHP will load and run faster. For more information, see the Apache webpage on DSO support.

Note: Apache's default httpd.conf currently ships with a section that looks like this:

User nobody Group "#-1"

Unless you change that to "Group nogroup" or something like that ("Group daemon" is also very common) PHP will not be able to open files.

Note: Make sure you specify the installed version of apxs when using --with-apxs=/path/to/apxs. You must NOT use the apxs version that is in the apache sources but the one that is actually installed on your system.

=== end of excerpt ===

RLE

In reply to Richard Enison

Re: Installation error - Invalid command 'php_flag'

by Fernando Salam -

Thanks, RLE.  I know that I have PHP running, since it's a hosted account with HostGator, and I have 8 other PHP sites on the same account that work with no problems.  I followed the instructions on the installation page, though it doesn't say anything about file permissions.  Based on the error message, I doubt that's the problem though.  Any other ideas?

Thanks,

FS

In reply to Fernando Salam

Re: Installation error - Invalid command 'php_flag'

by Richard Enison -

FS,

Okay. As I mentioned in an earlier post, I saw reference to a bug, that could be causing your problem, on the net. Here it is http://aspn.activestate.com/ASPN/Mail/Message/xml-sig/1207918; it includes a reference to the solution. If that doesn't fix it, I don't know what else to suggest, except to try the PHP forum.

RLE

In reply to Richard Enison

Re: Installation error - Invalid command 'php_flag'

by Fernando Salam -
Just to close the loop, in case someone experiences similar problems, I called my host Support, and all they did was to rename the .htaccess file to .htaccess.bak, and that was it!  So I guess I didn't need the file after all.