php - 如何使用php在根目录上方创建文件夹

标签 php exec dir

我的根目录 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/

相关文章:

PHP递归删除函数

php - 从 wordpress 函数获取结果 SQL

java - java中Exec方法从未抛出异常

powershell - Get-ChildItem:仅显示不包含特定文件的文件夹

linux - 如果我有一个进程,并且我克隆了它,PID 是否相同?

c - GTK+ gtk_widget_show_all() 在 fork 和 exec() 之后需要很长时间

php - 如何使用__dir__?

php - 如何从php中的按钮数组中提取特定的id号?

php - 我怎样才能在 .css 文件中运行 PHP 脚本并且它会完全工作?

php - Tinyint 用于 true/false