Проблема с правами доступа + PHP + Windows 7

275
29 марта 2017, 18:44

Написал скрипт для отправки файла по почте:

<?php
    $message = "Test message with attachment";
    $subject = "Hello World";
    $mailto = "starovoyt107@yandex.ru";
    $filename = $_POST['fl'];
    $path = "C:\OpenServer\userdata"; //В этой директории выбираю файл для отправки
    $file = $path.$filename;
    $content = file_get_contents($file);
    $content = chunk_split(base64_encode($content));
    $uid = md5(uniqid(time()));
    $name = basename($file);
    $header .= "MIME-Version: 1.0\r\n";
    $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
    $nmessage = "--".$uid."\r\n";
    $nmessage .= "Content-type:text/plain; charset=iso-8859-1\r\n";
    $nmessage .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
    $nmessage .= $message."\r\n\r\n";
    $nmessage .= "--".$uid."\r\n";
    $nmessage .= "Content-Type: application/octet-stream; name=\"".$filename."\"\r\n";
    $nmessage .= "Content-Transfer-Encoding: base64\r\n";
    $nmessage .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
    $nmessage .= $content."\r\n\r\n";
    $nmessage .= "--".$uid."--";
    if (mail($mailto, $subject, $nmessage, $header)) {
        return true; 
    } else {
      return false;
    }
?>

Однако в итоге получаю ошибку:

Warning: file_get_contents(C:\OpenServer\userdata): failed to open stream: Permission denied in C:\OpenServer\domains\localhost\send_mail.php on line 9

Я уже снимал на папку OpenServer атрибут "только для чтения" - не помогает, к тому же, галочка снова появляется... И ладельца через свойства менял, и галочки ставил, чтобы полный доступ был - не работает...

Answer 1

Warning: file_get_contents(C:\OpenServer\userdata): failed to open stream: Permission denied in C:\OpenServer\domains\localhost\send_mail.php on line 9

сами выше пишите что это C:\OpenServer\userdata директория. А значит у вас $filename = $_POST['fl']; пусто в $filename и совету выше добавьте разделитель в $file = $path. DIRECTORY_SEPARATOR .$filename; где DIRECTORY_SEPARATOR = \ | / знак | читать как или.

Answer 2
  1. либо "C:\\OpenServer\\userdata" либо "C:/OpenServer/userdata".
  2. $file = $path.$filename; добавить разделитель между путем и файлом. Должно быть так $file = $path.'\\'.$filename;, либо так $file = $path.'/'.$filename;, в зависимости от того, какой разделитель вам ближе.

PS Ну и в целом сделайте вывод получившегося значения $file и посмотрите, действительно ли такой файл есть

READ ALSO
Can&#39;t create/write to file

Can't create/write to file

ЗдравствуйтеMySQL стал выбивать ошибку:

228
Распределение ключей по части слова при загрузке списком

Распределение ключей по части слова при загрузке списком

ЗдравствуйтеУ меня стоит задача распределить ключевые слова по категориям при загрузке

206
Как обернуть каждую ссылку wp_list_categories в div?

Как обернуть каждую ссылку wp_list_categories в div?

Есть массив по выводу категорий в виде ссылокНужно каждую ссылку обернуть в div

257