Lea*_*don 66 php file-permissions chmod
我正在尝试使用PHP来创建文件,但它无法正常工作.我假设这是因为它没有写访问权限(以前一直是问题).我试图通过使文件夹chmod 0777来测试这是否是问题,但是刚刚结束使该目录中的每个脚本都返回500错误消息,直到我将其更改回来.如何为我的文件系统提供PHP写入权限,以便创建文件?
编辑:它使用Apache托管在Hostgator共享主机上.
编辑2:有人要求代码:代码是GD图像脚本.我知道其余部分的工作方式与之前我创建的图像一样.现在我尝试在添加新文本时创建它们并将它们保存到文件夹中.我的写行是:imagejpeg(null,$ file,85);
我还创建了一个测试文件来检查它是否只是一个损坏的脚本(主要是从tizag复制):http://gearboxshow.info/rkr/lesig.jpg/testfile.txt (我不知道是否/如何发布这里的代码是正确的.这是PHP脚本的内容,减去PHP标签.)
它返回13,13,1(单独的行),所以它看起来好像它认为它写了一些东西,但testfile.txt是空白的(我上传了一个空白的),或者不存在(如果我删除它).
编辑3:服务器运行CentOS.
fav*_*avo 54
一个非常简单的方法是让PHP首先创建目录.
<?php
 $dir = 'myDir';
 // create new directory with 744 permissions if it does not exist yet
 // owner will be the user/group the PHP script is run under
 if ( !file_exists($dir) ) {
     mkdir ($dir, 0744);
 }
 file_put_contents ($dir.'/test.txt', 'Hello File');
这可以节省您的权限麻烦.
Tho*_*nes 33
将目录的所有者设置为运行apache的用户.Linux上经常没有人
chown nobody:nobody <dirname>
这样你的文件夹将不是世界可写的,但仍然可写为apache :)
Gra*_*ler 12
摘要:您需要将目录的所有者设置为PHP使用的用户(Web服务器用户).
第1步:确定PHP用户
创建一个包含以下内容的PHP文件:
<?php echo `whoami`; ?>
将其上传到您的Web服务器.输出应类似于以下内容:
www-data
因此,PHP用户是www-data.
第2步:确定目录的所有者
接下来,通过命令行检查Web目录的详细信息:
ls -dl /var/www/example.com/public_html/example-folder
结果应类似于以下内容:
drwxrwxr-x 2 exampleuser1 exampleuser2 4096 Mar 29 16:34 example-folder
因此,目录的所有者是exampleuser1.
第3步:将目录所有者更改为PHP用户
然后,将Web目录的所有者更改为PHP用户:
sudo chown -R www-data /var/www/example.com/public_html/example-folder
验证Web目录的所有者是否已更改:
ls -dl /var/www/example.com/public_html/example-folder
结果应类似于以下内容:
drwxrwxr-x 2 www-data exampleuser2 4096 Mar 29 16:34 example-folder
因此,example-folder已成功将所有者更改为PHP用户:www-data.
完成!PHP现在应该能够写入目录.
1st使用以下命令确定哪个用户拥有httpd进程
ps aux | grep httpd
你会得到这样的几行响应:
phpuser   17121  0.0  0.2 414060  7928 ?        SN   03:49   0:00 /usr/sbin/httpd
这里第1列显示用户名.所以现在你知道正在尝试编写文件的用户,在这种情况下,phpuser
您现在可以继续设置php脚本尝试编写内容的目录的权限:
sudo chown phpuser:phpuser PhpCanWriteHere
sudo chmod 755 PhpCanWriteHere