我尝试使用php在我的本地apache服务器上创建目录
我试过了
<?php mkdir("folder"); ?>
和
<?php exec("sudo mkdir folder"); ?>
当我尝试在浏览器中执行它们时,没有任何事情发生
但我可以使用sudo从终端执行它们。 (我还修改了sudoers文件,因此它不会在第二个代码中提示输入密码)
当我不使用sudo时,我收到此错误
PHP Warning: mkdir(): Permission denied in /var/www/html/mscr/add.php on line 2
所以我可以在浏览器中执行除目录操作之外的几乎所有操作。 我希望能够在浏览器中创建,删除和编辑目录。
谢谢!
答案 0 :(得分:0)
听起来Apache没有创建文件夹的权限。要么为Apache提供文件夹的所有权(您尝试创建新文件夹的地方)
sudo chown www-data /var/www/html/mscr
或将文件夹权限设置为777
sudo chmod 777 /var/www/html/mscr
警告这会使mscr文件夹中的所有内容都可执行。为了解决这个问题,大多数CMS将创建一个子文件夹,设置为777,所以类似于/ var / www / html / mscr / uploads
答案 1 :(得分:0)
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
class Solution
{
static void Main(String[] args)
{
string[] inputs = { "GAAATAAA", "CACCGCTACCGC", "CAGCTAGC", "AAAAAAAA", "GAAAAAAA", "GATGAATAACCA", "ACGT" };
List<string> replacement = new List<string>();
foreach (var item in inputs)
{
replacement.Add(StringThatHasToBeReplaced(item));
}
}
static string StringThatHasToBeReplaced(string s)
{
var counter = new Dictionary<char, int>() {
{ 'A', 0 }, { 'C', 0 }, { 'G', 0 }, { 'T', 0 }
};
for (int i = 0; i < s.Length; ++i)
counter[s[i]] += 1;
int div = s.Length / 4;
var pairs = counter.ToList();
if (pairs.Where(p => p.Value != div).Count() == 0)
{
return null;
}
List<char> surplusCharacter = pairs.Where(p => p.Value > div).Select(p => p.Key).ToList();
int minLength = pairs.Where(p => p.Value > div).Sum(p => p.Value - div);
string result = s;
for (int i = 0; i < s.Length - minLength + 1; i++) // i is the start index
{
if (surplusCharacter.Contains(s[i]))
{
if (minLength == 1)
return s[i].ToString();
for (int j = i + minLength - 1; j < s.Length; j++) // j is the end index
{
if (surplusCharacter.Contains(s[j]))
{
var substring = s.Substring(i, j - i);
if (substring.Length >= result.Length)
{
break;
}
// we test if substring can be the string that need to be replaced
var isValid = true;
foreach (var c in surplusCharacter)
{
if (substring.Count(f => f == c) < counter[c] - div)
{
isValid = false;
break;
}
}
if (isValid)
result = substring;
}
}
}
}
return result;
}
}