When executing CGI, give me only plain text - cgi

When I tried to execute CGI, it gives me only plain text.
I installed PHP5.3.11 with apache2
All of them were installed manually from source code, not from apt-get
## Apache2
./configure --prefix/=usr/loca/apache2
make
make install
## php5
./configure --prefix=/usr/local/php5 --with-apxs2=/usr/local/apache2/bin/apxs
make
make test
make install
The above are commands that I used to install apache2 and php5.
I guess my installation for apache2 and php5 is correct, since I can run php code on my server. So I tried to execute CGI script after properly, I guess, setting a configuration.
However it shows only plain text of CGI script.
###Start###
#!/usr/bin/perl -w
print "Content-type: text/html\r\n\r\n";
print "Hello there!<br />\nJust testing .<br />\n";
for ($i=0; $i<10; $i++){
print $i."<br />";
}
###End###
perl is properly installed at /usr/bin/perl.
I set my httpd.conf like below.
<Directory "/usr/local/apache2/cgi-bin">
Options +ExecCGI
AddHandler cgi-script .cgi .pl
Require all granted
</Directory>
I think cgi-php5 is installed correctly as well, since when I execute "php-cgi -h", it gives me a result.
And when I open phpinfo() through browser,
GATEWAY_INTERFACE is set to CGI/1.1
Any thing I am missing? I appreciate for your help.

I found the answer.
my mistake was on httpd.conf and it was really stupid mistake. :-(
I had to uncomment the following line.
LoadModule cgi-script blahblah
No one knows how many hour I spend for this stupid mistake :-(

Related

CentOS 7 + PHP7 -- php not rendering in browser

I have a clean install of apache/httpd and php7.1.0 running on CentOS 7.
When I execute from the command line:
php -v
I get the expected response:
PHP 7.1.0 (cli) (built: Dec 1 2016 08:13:15) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.1.0-dev, Copyright (c) 1998-2016 Zend Technologies
But when I try to hit my phpinfo.php page, all I get is...
<?php phpinfo(); ?> literally outputted to the screen - can someone tell me what I'm missing, did I forget to enable a mod?
For PHP 7 (May apply to previous versions as well), but I had to do this:
Add this to the bottom of /etc/apache2/apache2.conf
or for Centos /etc/httpd/conf/httpd.conf
SetHandler application/x-httpd-php
Fabien's answer worked for me, but apache started to serve css/js files with the wrong mime type. I fixed it adding this at the end of /etc/httpd/conf/httpd.conf
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
That means that PHP isn't enabled in Apache. PHP addresses that here - step 8 should solve your problem.
As an addition: what I usually do on a new install, is install an entire LAMP-server. On Ubuntu, that's done with sudo apt-get install lamp-server^ (note: the caret is not a typo).
This was solution for me - adding this line into httpd.conf where your app's ServerName and DocumentRoot are:
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/laravel/public/$1
Comment out the "Directory" line in the /etc/httpd/conf.d/php.conf file. Then restart the httpd server
ran into the same problem. On a Centos 8 Stream installation.
First check if php is installed and working, for example:
php /var/www/html/info.php
If this works, and apache is not serving/interpreting the php file, than install php-fpm (mod_php was deprecated):
dnf install php-fpm
systemctl enable php-fpm
systemctl status php-fpm
systemctl restart httpd
Check in the browser.
If successful, delete the info.php file

phpmyAdmin admin page displays only "demo server"

Linux Mint 18
Apache2 server
MYSQL Server
Hello! Does anyone have a moment to advise me?
Here's my problem in brief: I am trying to configure phpMyAdmin on a Linux Mint 18 computer, but when I try to view http://localhost/phpmyadmin/, I get a "phpMyAdmin demo server" screen.
Details:
The phpMyAdmin web page begins with an addJSON statement, and echoes this message:
'You are using the demo server. You can do anything here, but please do not change root, debian-sys-maint and pma users'
I understand I am viewing some sort of demonstration page for phpMyAdmin, but I would rather view the actual, familiar phpMyAdmin administration page.
Do I need to edit the Apache2.conf file? Or something else? Thank you very much for your time.
Eric
i had this problem with ubuntu 16.04
fix
1# Remove phpmyadmin completely
sudo apt-get remove phpmyadmin
2# Install phpmyadmin with this command
sudo apt-get install phpmyadmin apache2-utils
3# add phpmyadmin to the apache configuration
sudo nano /etc/apache2/apache2.conf
And put below line to end of the file
Include /etc/phpmyadmin/apache.conf
4# restart apache2
sudo systemctl restart apache2
or
sudo service apache2 restart
I had the same problem, but my error was because I commented the Handler in php.ini
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
I just enable php on apache and start work normal
a2enmod php7.3
I had to disable mpm_event because it was causing some comflict
a2dismod mpm_event
Perhaps PHP code is not being executed, instead code shows on the page or Apache shows php code instead of executing may help.
Linux Mint is similar to Ubuntu/Debian, so you need the libapache2-mod-php5 package installed (assuming you've used the package manager to install the rest of your PHP/Apache stack): sudo apt-get install php5 libapache2-mod-php5.
You can test this further by adding a file (called test.php or phpinfo.php or whatever else suits you) in the main phpMyAdmin folder with the content <?php phpinfo(); ?> -- then try to load that file directly and see if you get a long list of system status or simply the contents of the file displayed. The main reason to put it in the phpMyAdmin folder is that your Apache configuration might handle different folders differently, this is the simplest way to test what happens on that particular folder.

After install OS X El Capitan, Apache not working

I just installed in my MacBook pro "El capitan" and I can't type any host set it in vhost. Everything was working perfectly before in Yosemite. When I type one of my virtualhost I get:
403 "Forbidden You don't have permission to access / on this server."
What did I try ?
go to /etc/apache2/httpd.conf
and uncoment this lines:
Include /private/etc/apache2/extra/httpd-vhosts.conf
LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so
/etc/apache2/extra/httpd-vhosts.conf is the same file that was working before in Yosemite since long time ago, so I haven't modified.
To install everything in Yosemite I used homebrew.
Another problem related with "El capitan", before I was able to type http://localhost/~myuser/ and I could access to any folder in /Users/myuser/Sites now I get this message: 404 not found.
I hope some help, I am not specialist in servers and it's really difficult to me to set it up, and is very annoying to waste a lot of time anytime there is a new upgrade in the OS.
The upgrade process keeps a copy of your old httpd.conf. Unless you were way out of date, just overwrite the new file with your old one. Keep a copy of the new just in case...
sudo cp /etc/apache2/httpd.conf /etc/apache2/httpd.conf.after-update
sudo mv /etc/apache2/httpd.conf.pre-update /etc/apache2/httpd.conf
sudo apachectl restart
I had the same trouble.
Type this command line you will have the error from apache :
apachectl configtest
If you have this error :
AH00526: Syntax error on line 20 of /private/etc/apache2/extra/httpd-mpm.conf: Invalid command 'LockFile', perhaps misspelled or defined by a module not included in the server configuration.
so this link can help : https://apple.stackexchange.com/questions/211015/el-capitan-apache-error-message-ah00526
I experienced that after the upgrade to El Capitan the line
Include /private/etc/apache2/extra/httpd-userdir.conf
in
/private/etc/apache2/httpd.conf
was commented again. After uncommenting it and restarting apache, everything worked alright again.
I have merged to two versions (httpd.conf and http.conf~previous) and after that I discovered that the v-host wasn't working anymore.
After disabling rule 19 #NameVirtualHost *:80 in /private/etc/apache2/extra/httpd-vhosts.conf everything worked again!
LockFile is a directive of Apache ≤ 2.2. El Capitan comes with Apache version 2.4. so, you need to disable LockFile
First, just to be sure apache is stopped:
sudo apachectl stop
Then edit your httpd-mpm.conf:
Comment this lines
#
# The accept serialization lock file MUST BE STORED ON A LOCAL DISK.
#
<IfModule !mpm_winnt_module>
<IfModule !mpm_netware_module>
LockFile "/private/var/log/apache2/accept.lock"
</IfModule>
</IfModule>
Start apache sudo apachectl start and that's all
As some have mentioned the problem is that the upgrade to El Capitan backed up your previous httpd.conf and renamed it httpd.conf~previous and gave you a new httpd.conf. What you need to do though with these files to fix your problem is:
Use nano or other editor to open httpd.conf~previous and look for these 2 lines:
DocumentRoot "/Users/my-machine-name/Prev-Localhost-Path
<Directory "/Users/my-machine-name/Prev-Localhost_path">
Copy them and then using nano open httpd.conf and look for these 2 lines:
DocumentRoot "/Library/WebServer/Documents"
<Directory "/Library/WebServer/Documents">
Comment them out by entering the '#' character in front of each one, and then below them paste in the two lines you copied from your original file. Save the file and exit.
After that you'll need to reboot. My setup would not work until I made these changes and then rebooted. But perhaps the suggestion by DSG to restart apache will suffice:
sudo apachectl restart

Munin server with apache - You don't have permission to access /munin on this server

On a fresh apache and munin server install when I to to domain.com/munin I get this error.
Forbidden
You don't have permission to access /munin on this server.
for these directories I did a chown -R munin:munin
dbdir /var/lib/munin
htmldir /var/cache/munin/www
logdir /var/log/munin
rundir /var/run/munin
What am I supposed to do with apache? I restated apache with /etc/init.d/apache restart but still get forbidden. I have made no changes to the apache config files from a fresh apache install.
Apache < 2.4
Open the Munin Apache config file:
vim /etc/munin/apache.conf
change the the following lines:
Order allow,deny
Allow from localhost 127.0.0.0/8 ::1
Options None
like so:
Order allow,deny
Allow from all
Options FollowSymLinks SymLinksIfOwnerMatch
Restart Apache and you're golden.
Apache > 2.4
Open the Munin Apache config file:
vim /etc/munin/apache24.conf
change the the following lines:
Require local
Options None
like so:
Require all granted
Options FollowSymLinks SymLinksIfOwnerMatch
Restart Apache and you're golden.
sudo service apache2 restart
For Apache 2.4 (which ships with Ubuntu 13.10), the /etc/munin/apache.conf configuration file syntax has changed:
Order allow, deny
Allow from all
needs to be changed to
Require all granted
Additional detail regarding upgrading from Apache 2.2 to Apache 2.4 can be found in the Apache upgrade notes.
I had the same problem, and none of the advices were helpful.
So I've browsed a little bit in the directory tree, and found the apache24.conf file. So I've add to this /etc/munin/apache24.conf file the following, as j7nn7k described:
Require all granted
Options FollowSymLinks SymLinksIfOwnerMatch
And of course I deleted the old values.
Now It's working!
I don't know if it's the same problem but I found a solution that fixed it for me.
I followed the tutorial here (from the italian ubuntu wiki), and changed the string from:
htmldir /var/cache/munin/www
To:
htmldir /var/www/munin
Then I edited the file:
vim /etc/munin/apache.conf
Allowing from all, as Johe Green did. But then take a close look to the Directory path, since it must be modified as the htmldir path in the munin conf.
Alias /munin /var/www/munin
<Directory /var/www/munin>
Order allow, deny
Allow from all
[...]
I had the same issue, after a clean install of apache2, munin and munin-node on Ubuntu 12.04LTS. Tried all the suggested options above with no effect. Found in the end that I had to
chmod 755 /var/www/munin
chown -R munin:munin /var/www/munin
That solved it for me.
cd /pub
more beer
I'm using apache 2.4.10 and munin 2.0.25-1 on ubuntu 15.04
To solve the problem, I followed Lars' sugestion, i.e. using Require all granted, but applying the changes to the file /etc/munin/apache24.conf
Changing /etc/munin/apache.conf had no effect for me. I have tried to grep me to the file determining which apache config file is chosen without success. But at list I solve the problem.
I faced the same problem and changed the /etc/munin/apache.conf line to Allow from all but still got the same 403 Forbidden error, I also had to change munin-node.conf
Comment block from munin-node.conf file where I made a change
#A list of addresses that are allowed to connect. This must be a
regular expression, since Net::Server does not understand CIDR-style
network notation unless the perl module Net::CIDR is installed. You
may repeat the allow line as many times as you'd like
Added my munin IP here in similar format and it worked
allow ^127.0.0.1$
P.S I am running munin master and node on the same box when testing this.
I have the same issue when create a soft link named 'share' under the root document and let it point to a package like /Users/me/desktop/share
firstly I do
chmod 655 /Users/me/desktop/share
I can not work
then I do
chmod 655 /Users/me/desktop
It works, I can see the 'share' listed under the root document path.
I user Mac Yosemite 10.10.3 and its in build Apache 2.4
hope its helpful
I was having the same problem as the OP using Ubuntu 14.04 and the stock versions available with apt-get. I tried the official Ubuntu documentation, the DigitalOcean instructions, and couldn't get graphs to show up (403 errors). I uninstalled (purged)/reinstalled munin since it was supposedly a random bug. I finally had luck when following this howtoforge writeup. It does not aim to move munin data from /var/cache/munin/www. Rather, it ensures:
Extra plugins are installed: apt-get install munin munin-node munin-plugins-extra
Apache fcgid is enabled: a2enmod fcgid
A sparse /etc/munin/apache.conf file is used (see below)
Replace your entire /etc/munin/apache.conf file contents with:
Alias /munin /var/cache/munin/www
<Directory /var/cache/munin/www>
# Require local
Require all granted
Options FollowSymLinks SymLinksIfOwnerMatch
Options None
</Directory>
ScriptAlias /munin-cgi/munin-cgi-graph /usr/lib/munin/cgi/munin-cgi-graph
<Location /munin-cgi/munin-cgi-graph>
# Require local
Require all granted
Options FollowSymLinks SymLinksIfOwnerMatch
<IfModule mod_fcgid.c>
SetHandler fcgid-script
</IfModule>
<IfModule !mod_fcgid.c>
SetHandler cgi-script
</IfModule>
</Location>
I had the same issue and solved it.
I was using Munin with Apache 2.4.18 so there was a seperate configuration file (/etc/munin/apache24.conf) which I had to edit.
Editing /etc/munin/apache.conf had NO effect.
Here is my complete install procedure for installing Munin on Linux Mint 17.3 (kernal 3.19), and should also work with recent Ubuntu.
Unlike Monit, Munin does not have its own web server, so is a bit more complicated to install.
#!/bin/bash
# Install script for Apache 2 with MySQL, PHP 5, etc.
# Update the Package Lists
apt-get update
# Install the MySQL Server and Client before installing Apache
apt-get install mysql-server mysql-client
# Install Apache
apt-get install apache2
# Install PHP5
apt-get install php5 libapache2-mod-php5
# Restart Apache
/etc/init.d/apache2 restart
# Install some extras
apt-get install snmp php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl
# Once again, restart
/etc/init.d/apache2 restart
# Install the Munin Server and the Client
apt-get install munin munin-node
# Restart the machine
shutdown -r now
Ignore the uninstall part and replace your entire /etc/munin/apache.conf file contents as hamx0r says earlier in this thread (please vote up his post):
https://stackoverflow.com/a/35656044/5178979
"Allow from all" makes sense to me, but it no longer works.
Maybe because I installed Munin prior to installing Apache2, I was missing the following symbolic links:
/etc/apache2/conf-available/munin.conf -> ../../munin/apache.conf
/etc/apache2/conf-enabled/munin.conf -> ../conf-available/munin.conf
cd /etc/apache2/conf-available && ll
If you do not see the link, create it:
ln -s ../../munin/apache.conf munin.conf && ll
If the first file is missing, this one is probably also missing
cd /etc/apache2/conf-enabled/ && ll
Create the link:
ln -s ../conf-available/munin.conf munin.conf && ll
Restart Apache2, wait 5 minutes, and hopefully it works.
If you want to monitor a machine other than the one running Munin, you simply install munin-node, and then add a line to /etc/munin/munin-node.conf
Find this line
allow ^127.0.0.1$
Add another similar line that includes the address of the munin server like:
allow ^192.168.1.100$
This is not necessary for Windows clients running munin-node.
Don't forget to add machines you want to monitor to your Munin server
/etc/munin/munin.conf
# MyMachine
[MyMachineName.mydomain]
address 127.0.0.1
use_node_name yes
Now for a question for the experts. Why do some machines not report hard drive temperature? I know that is a vague question and probably needs more details.
Edit /etc/munin/apache.conf and uncomment the 4 lines following from AuthUserFile.
AuthUserFile /etc/munin/.htpasswd
AuthName "Munin"
AuthType Basic
require valid-user

PHP Extension: Works from command line, but not in httpd (Apache) server

I'm getting the strangest problem with my PHP extension. When I use it from the command line, like so:
php -r '$mc = new MyClass("foo"); echo $mc->getField();'
it prints out "foo" as expected.
However, if I try to do the same thing from within my index.php, I get a class not found error.
Fatal error: Class 'MyClass' not found in /var/www/html/index.php on line 12
How could this be happening? I've even set httpd to run as the same user as myself when running the php -r command.
My index.php looks like so:
<html>
<head>
<title>PHP Test</title>
</head>
<body>
<p>
<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
$mc = new MyClass("foo");
echo $mc->getField();
?>
</p>
</body>
</html>
The php portion of my httpd.conf looks like so:
# PHP Configuration for Apache
#
# Load the apache module
#
LoadModule php5_module modules/libphp5.so
#
# Cause the PHP interpreter handle files with a .php extension.
#
<Files *.php>
SetOutputFilter PHP
SetInputFilter PHP
LimitRequestBody 9524288
</Files>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
#
# Add index.php to the list of files that will be served as directory
# indexes.
#
DirectoryIndex index.php
And obviously my php.ini is set up correctly, because my php -r command works. What could possibly be causing this issue?
The php executable you're running on the command line is different to the libphp5.so library you're running via Apache.
Put the following into a file, upload it to your server and view it via the web and you'll probably see that your module hasn't been loaded:
<?php phpinfo(); ?>
This file will tell you what modules have been loaded, which php.ini file is being used, and lots of other information. It should help you diagnose your problem. You'll probably need to set an Apache configuration parameter to either load the correct php.ini file or load the .so file of your module directly.
It turns out that the issue was due to SELinux. If it is turned off like so:
echo 0 >/selinux/enforce
Everything magically works.
I have got the same issue and solved restoring the SELinux context for the extension files, which should be ideal instead of disabling SELinux, as the following example:
# restorecon -R -v /usr/lib64/php
# restorecon -R -v /etc/php.d