> On my local machine (win2k pro, apache), no problems -- everything works
> just as designed.
> 
> Today I began testing on the live server; i.e. my client's hosting company
> (linux, apache 1.3.27, php 4.3.1)  -- that's when the trouble started.
> 
> The site builder app builds static pages based on changes made by users in
> our online administration center.  When I test out creating a new site
> section; i.e. triggering my make_file function(writes page content to new
> file) I receive the following error:
> 
> Warning: fopen(/local_server_path/file_to_create.php) [function.fopen]:
> failed to create stream: Permission denied
> 
> I've attempted to chmod(777) my testing directory via ftp client, which
> appears to work; however, when I fileperms($file_in_test_dir), I get
> chmod(644), so clearly I'm not the owner.
> 
> Pardon my ignorance here, but I as yet know little about dir/file perms.
> Should I contact the host and have them give me sufficient permissions?

If you create a subdirectory of the root level public HTML directory, then
PHP can create files there, but not in the root level directory. If you
change permissions to 777, PHP can create files there, but it's not a good
idea to have the permissions that wide-open.

You might be able to get your commercial host to change who PHP is running
as from "nobody" to your login identity, then PHP could write to the root
level directory, but you might not be able to -- my main host says they're
changing policy for security reasons to not allow that.

You could put the static files in a subdirectory where PHP will have
permission to create files. But this might require lots of reworking links
depending on your site design, and thus not be a viable option.

You could set up a PHP script to be executed by a crontab as a CGI. Done
this way, PHP can write to the root level directory. This is what I did
recently for a similar problem. The content management system provides a
link for updating static HTML pages. That link (script) writes info to the
database, flagging an update request. Every 5 minutes, a crontab calls the
PHP CGI script that actually does the update. The script checks the database
flag and does the updates if they've been requested (flagged).

Bottom line -- discuss the problem with your commercial host and see what
they suggest.

--
Lowell Allen

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to