我的根目录 ID
/var/www/html/
我想在/var/www/创建目录
即 /var/www/myfolder
我正在执行create_dir.php 来自
/var/www/html/site/create_dir.php
当我执行这个程序时,它无法创建文件夹。
在日志中我得到了拒绝许可。 更新
这是我的代码
<?php
$os_type=php_uname('s');
$cur_file_path=$_SERVER['PHP_SELF'];
echo "File path:$cur_file_path<br>";
$scount=substr_count($cur_file_path, '/');
echo "/ count:$scount<br>";
$doc_root= $_SERVER['DOCUMENT_ROOT'] ;
echo "doc root:$doc_root<br>";
if($os_type=='Linux')
{
$ds=substr_count("$cur_file_path","/");//directory seperator
echo "Count of /=$ds<br>";
}
if($os_type=='Windows')
{
$ds=substr_count("$cur_file_path","'\'");//directory seperator
}
$path="../";
for($i=1;$i<$scount;$i++)
{
$path.="../";
}
$dir="myfolder";
exec("mkdir ".$dir);
?>
如何解决这个问题。
最佳答案
这是一个安全问题,因为它提供了对世界的读写访问权限。您的 apache 用户可能没有该目录的读/写权限。
如果$os_type=='Linux'
,您将执行以下操作:
1. 确保所有文件均归 Apache 组和用户所有。在 Linux 中,它是 www-data 组和用户
exec('chown -R www-data:www-data /path/to/webserver/www',$ouput,$result);
2.接下来启用www-data组的所有成员读取和写入文件
exec('chmod -R g+rw /path/to/webserver/www',$ouput,$result);
php mkdir()
函数现在应该可以正常工作而不会返回错误。如果出现错误,您还可以在 $output 中看到错误输出。
还有另一种使用 ftp 创建目录的方法:
你可以尝试使用 ftp 进行 mkdir,mkdir 与流包装器配合使用,所以这样写 mkdir('ftp://user:pass@server/mydir');
或
如果您对有效的安全模式限制有问题,即如果您尝试递归创建和访问子目录
,您可以使用ftp-lib em>像这样。
<?php
DEFINE ('FTP_USER','yourUser');
DEFINE ('FTP_PASS','yourPassword');
/**
* Returns the created directory or false.
*
* @param Directory to create (String)
* @return Created directory or false;
*/
function mkDirFix ($path) {
$path = explode("/",$path);
$conn_id = @ftp_connect("localhost");
if(!$conn_id) {
return false;
}
if (@ftp_login($conn_id, FTP_USER, FTP_PASS)) {
foreach ($path as $dir) {
if(!$dir) {
continue;
}
$currPath.="/".trim($dir);
if(!@ftp_chdir($conn_id,$currPath)) {
if(!@ftp_mkdir($conn_id,$currPath)) {
@ftp_close($conn_id);
return false;
}
@ftp_chmod($conn_id,0777,$currPath);
}
}
}
@ftp_close($conn_id);
return $currPath;
}
?>
也许有帮助。
关于php - 如何使用php在根目录上方创建文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34647684/