尝试在public_html

时间:2015-09-17 15:37:46

标签: php permissions

我正在尝试运行一个创建页面并将它们保存到服务器的脚本 但是我在public_html目录中的一个文件上收到权限错误。

所以在“pages”目录中创建了2个页面,这个目录是chmod到0777并且它们被创建得很好。 第3页是在“public_html”目录中创建的,如果您没有权限,该目录将失败。 我找到修复此问题的唯一方法是将“public_html”目录chmod到0770然后 一切正常但主办公司强烈建议我不要因为安全风险而这样做。

所以我的问题是,还有其他方法可以实现这个目标吗? 稍微调查它看起来我需要给脚本“用户”特权可能会工作但是 目前我不知道这一点。 我甚至不确定脚本正在运行的是什么,我猜“group”作为chmoding public_html 到0770允许“组”

我的设置是:运行centos 6.7 x86_64

的vps服务器

php 5,dso,Apache suEXEC

我正在使用的简化代码是:

$page_path = "/home/username/public_html/";
$loop[Html_Name] = "test.html";
$new_page_file = "test.html";


$fp = fopen($page_path.$loop[Html_Name], "w"); 
fwrite($fp, $new_page_file); 
fclose($fp); 
chmod($page_path.$loop[Html_Name], 0666);

非常感谢提前。

1 个答案:

答案 0 :(得分:0)

通常,我们在这些情况下使用ftp。 / public_html权限可能保持为750并运行此代码。

$server = 'localhost';
$ftp_user_name = 'username';
$ftp_user_pass = 'passw';
$dest = 'public_html/new.file';
$source = '/home/username/public_html/path/to/existing.file';

$connection = ftp_connect($server);
$login = ftp_login($connection, $ftp_user_name, $ftp_user_pass);
if (!$connection || !$login) { die('Ftp not connected.'); }
$copied = ftp_put($connection, $dest, $source, FTP_BINARY);
if ($copied) { 
    echo 'File copied';
} else {
    echo 'Copy failed!'; 
}
ftp_close($connection);

可以在另一个目录中创建public_html中具有最终目的地的页面,然后此脚本将其复制到public_html中。旧文件将保留,如果存在具有相同目标名称的文件将被覆盖 $ dest是用户主目录的相对路径。 $ source是绝对路径 如果ftp由filezilla或其他东西同时使用,连接将失败。解决方案是在cPanel中创建第二个ftp用户帐户。