Mari Masuda wrote: > On Jul 1, 2009, at 12:20, Shawn McKenzie wrote: > >> Shawn McKenzie wrote: >>> Mari Masuda wrote: >>>> Hello, >>>> >>>> This is probably a dumb newbie question. I am running PHP 5.2.5 and >>>> Apache 2.2.8 on my Mac Book Pro OS X 10.4.11. I compiled PHP and >>>> Apache >>>> from source a while ago (as opposed to using the built-in web server >>>> that is included w/ Mac OS X). I have written the below PHP whose >>>> purpose is to read an existing comma separated (CSV) file and save the >>>> data into a text file that I can later copy and paste from into my >>>> website content management system. The problem is that on my Mac, I >>>> cannot seem to figure out what permissions I need to set in order to >>>> make the input CSV and the initially non-existant output text file >>>> readable and writable by Apache/PHP. I have Googled and come across >>>> many pages about different ways to set permissions and different >>>> permissions to set but none of the ways suggested that I tried >>>> seemed to >>>> work for me. As a temporary solution, I uploaded my PHP file to a >>>> Windows 2003 server running Apache and PHP and it worked flawlessly >>>> (and >>>> makes me suspicious that there is some huge security hole with the >>>> Windows box since it was able to execute with no permissions >>>> modifications). Any tips would be greatly appreciated. Thanks! >>>> >>>> Mari >>>> >>>> --- start my code --- >>>> <?php >>>> >>>> $in = fopen("/Applications/apache/htdocs/wp-php/wp.csv", "r"); >>>> $out = >>>> fopen("/Applications/apache/htdocs/wp-php/tableToCutAndPaste.txt", >>>> "w"); >>>> $counter = 0; >>>> >>>> >>>> fwrite($out, "<table>\n"); >>>> >>>> while(($data = fgetcsv($in)) !== FALSE) { >>>> $paperNumber = $data[0]; >>>> $authors = $data[1]; >>>> $title = $data[2]; >>>> $filename = $paperNumber . ".pdf"; >>>> >>>> if(($counter % 2) == 0) { >>>> fwrite($out, "<tr>\n"); >>>> } else { >>>> fwrite($out, "<tr style=\"background: #cccccc;\">\n"); >>>> } >>>> >>>> fwrite($out, "<td><a >>>> href=\"http://www.example.com/workingpapers/getWorkingPaper.php?filename=$filename\">$paperNumber</a></td>\n"); >>>> >>>> >>>> fwrite($out, "<td>$authors</td>\n"); >>>> fwrite($out, "<td>$title</td>\n"); >>>> fwrite($out, "</tr>\n"); >>>> >>>> $counter++; >>>> } >>>> >>>> fwrite($out, "</table>\n"); >>>> >>>> >>>> fclose($in); >>>> fclose($out); >>>> >>>> ?> >>>> --- end my code --- >>> >>> What are the permissions on /Applications/apache/htdocs/wp-php/ ? >>> >>> Apache needs write permissions on that dir in order to create the file >>> tableToCutAndPaste.txt. >>> >>> It's probably not a secure idea to give write permissions to that dir, >>> so maybe create a subdir of tmp and change those permissions (one way): >>> >>> mkdir /Applications/apache/htdocs/wp-php/tmp >>> chmod a+w /Applications/apache/htdocs/wp-php/tmp >>> >> >> Also, turn on error reporting so that you can see the exact problem. It >> may not be what you think. >> >> -- >> Thanks! >> -Shawn >> http://www.spidean.com > > > Thanks for the suggestions. I added the following lines to the very top > of my code: > > error_reporting(E_ALL); > > mkdir("/Applications/apache/htdocs/wp-php/tmp", 0777, true); > chmod("/Applications/apache/htdocs/wp-php/tmp", "a+w"); > > and I also changed the line where it tries to open the file to write to > to go to the new directory: > > $out = > fopen("/Applications/apache/htdocs/wp-php/tmp/tableToCutAndPaste.txt", > "w"); > > Below are the errors I got: > --- start errors --- > Warning: mkdir() [function.mkdir]: Permission denied in > /Applications/apache/htdocs/wp-php/generateTable.php on line 5 > > Warning: chmod() [function.chmod]: No such file or directory in > /Applications/apache/htdocs/wp-php/generateTable.php on line 6 > > Warning: > fopen(/Applications/apache/htdocs/wp-php/tmp/tableToCutAndPaste.txt) > [function.fopen]: failed to open stream: No such file or directory in > /Applications/apache/htdocs/wp-php/generateTable.php on line 9 > > Warning: fwrite(): supplied argument is not a valid stream resource in > /Applications/apache/htdocs/wp-php/generateTable.php on line 13 > > Warning: fwrite(): supplied argument is not a valid stream resource in > /Applications/apache/htdocs/wp-php/generateTable.php on line 22 > > Warning: fwrite(): supplied argument is not a valid stream resource in > /Applications/apache/htdocs/wp-php/generateTable.php on line 27 > > Warning: fwrite(): supplied argument is not a valid stream resource in > /Applications/apache/htdocs/wp-php/generateTable.php on line 28 > > Warning: fwrite(): supplied argument is not a valid stream resource in > /Applications/apache/htdocs/wp-php/generateTable.php on line 29 > > Warning: fwrite(): supplied argument is not a valid stream resource in > /Applications/apache/htdocs/wp-php/generateTable.php on line 30 > > Warning: fwrite(): supplied argument is not a valid stream resource in > /Applications/apache/htdocs/wp-php/generateTable.php on line 35 > > Warning: fclose(): supplied argument is not a valid stream resource in > /Applications/apache/htdocs/wp-php/generateTable.php on line 39 > --- end errors --- > > The permissions are as follows (sorry I didn't think to include them in > my original message): > > [Wed Jul 01 12:28:29] ~: ls -la /Applications/apache/htdocs/wp-php/ > total 64 > drwxr-xr-x 5 mari admin 170 Jun 29 16:47 . > drwxr-xr-x 24 mari admin 816 Jun 29 16:47 .. > -rw-r--r-- 1 mari admin 6148 Jun 28 21:11 .DS_Store > -rwxr--r-- 1 mari admin 827 Jul 1 12:26 generateTable.php > -rwxr--r-- 1 mari admin 17532 Jun 28 20:53 wp.csv > [Wed Jul 01 12:29:01] ~: > > Thank you, > Mari That's because the apache user doesn't have permissions to create the dir or change the permissions. The commands I gave you need to be run from the command line. -- Thanks! -Shawn http://www.spidean.com -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php