I wrote a PHP script to a particular site using a home computer for debugging. Script worked properly, when I tested it on a home computer. The script has stopped working when I deploy the script on the server (CentOS).

I thought, that I made a mistake when writing the script, and created this issue.

Chuan Ma suggested that the website administration blocked server IP. I wrote to the admins and they said that they do not block the IP.

My problem is that I can not go to the site using the server. I tried several tools for getting html of the site.

  1. I have tried to use the browser. I deployed on my server this script and went to the site as a real user. When I visit the site using the browser, I get an error (http code 403).

  2. I have tried curl from the command line.

    server:~# curl http://4pda.ru/
    <head><title>403 Forbidden</title></head>
    <body bgcolor="white">
    <center><h1>403 Forbidden</h1></center>
  3. I tried the utility wget.

    server:~# wget  http://4pda.ru --quiet -O -

I do not know what to do now. I would welcome any advice.


403 forbidden means that the webserver is configured to not allow you to do what you're trying to do. In most cases, it's either of the following:

  • The script does not have execute permissions on the server (i.e. it's uploaded with -rw-r--r-- instead of -rwxr-xr-x, or maybe -rwx------
  • The script is in a directory that the server does not have access to due to the directory/file permissions
  • The server is configured to not allow access to files in that directory (in this case, you need to look at the server's httpd.conf)

Edited with yet another potential reason

Another reason can be that the server is configured with mod_security, which may require a full set of HTTP headers. This is a protection against a lot of crack/dos attacks often used by script kiddies. If this is the case, make sure that your script sends the HTTP header

User-Agent: A suitable name for your script

If that doesn't help, you need to ask the server administrator for the site that's failing your script and ask them what their HTTP logs say.

  • I'm sorry, I want to clarify whether I have understood you. I have a server (VDS, CentOS). Using this server, I want to get the html code of a website. I use CURL (PHP) for this task. When I want to get, for example, the html code of the Google page, everything works correctly. When I want to get the html code of the site 4pda.ru, I get a 403 http response code. That is, the script works correctly in the general case, but it does not work for the site 4pda.ru. – Denis Jun 28 '13 at 8:00
  • OK, then I completely misunderstood you - I thought you meant that you were trying to access your own script. I think I may have an idea though; let me edit my answer. – Jenny D Jun 28 '13 at 8:55
  • I've edited my answer now. I have seen that particular issue several times as the place I work with is using mod_security, and about every three months I get some script developer asking me why their script doesn't work for our site. – Jenny D Jun 28 '13 at 9:01
  • Jenny D, thanks for the new answer. Unfortunately, I am sending identical user request headers. You're probably right, I have to again talk to the administrator. – Denis Jun 28 '13 at 9:10
  • Darn. It might be some other header they're requesting though - but yes, at this point all we have is guesses. I hope you get a good answer from your sysadmin! – Jenny D Jun 28 '13 at 9:13

Try this with the needed URL (I write google as an example):

wget --header="User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_0) AppleWebKit/600.1.17 (KHTML, like Gecko) Version/8.0 Safari/600.1.17" 'https://www.google.es'
  • Why would the website require a particular user agent? – RalfFriedl Oct 10 '18 at 18:42
  • To skip a header check in same cases like https. The goal is to obtain the same content as what you see in a normal Web browser – Carlos AG Oct 10 '18 at 18:57
  • But the question already says "When I visit the site using the browser, I get an error (http code 403)." – RalfFriedl Oct 11 '18 at 7:20
  • HTTP 403 is returned when the client is not permitted access to the resource for some reason besides authentication. For instance: cookies, etc. – Carlos AG Oct 13 '18 at 17:57
  • Possible causes: en.wikipedia.org/wiki/… – Carlos AG Oct 13 '18 at 17:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.