« Return to Thread: cannot figure out permissions for fopen/fwrite

Re: Re: cannot figure out permissions for fopen/fwrite

by Mari Masuda-2 :: Rate this Message:

Reply to Author | View in Thread

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

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

 « Return to Thread: cannot figure out permissions for fopen/fwrite