apache is the literal file server for a webserver. PHP is just an interpreter language for your php scripts. MySQL or whatever RDBMS is just a database.
When you run a php script, usually it's run as the user "nobody" or whatever user the apache server is running as. This happens because in Apache's config it spawns a php process as that Apache user (just like your username on a Windows machines opens programs, that's essentially what Apache is doing). So you want to make sure that Apache has the ability to read the php files. Also double-check that the Apache user has the ability to read the directory. Many times a <Directory> configuration is missing and requests are denied.
As for being able to upload to a server, you should just be able to upload a php file to the document root of the site and then browse to it. you can't upload it to just anywhere, it has to be where Apache can read it, and has permission to read it (i.e. the document root of a website).