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