我正在尝试运行一个创建页面并将它们保存到服务器的脚本 但是我在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);
非常感谢提前。
答案 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用户帐户。