Php ошибка файл не найден

I had been having the same issues,
And during my tests, I have faced both problems:

1º: «File not found»

and

2º: 404 Error page

And I found out that, in my case:

I had to mount volumes for my public folders both on the Nginx volumes and the PHP volumes.

If it’s mounted in Nginx and is not mounted in PHP, it will give: «File not found«

Examples (Will show «File not found error»):


services:
  php-fpm:
    build:
      context: ./docker/php-fpm
  nginx:
    build:
      context: ./docker/nginx
    volumes:
        #Nginx Global Configurations
      - ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./docker/nginx/conf.d/:/etc/nginx/conf.d

        #Nginx Configurations for you Sites:

        # - Nginx Server block
      - ./sites/example.com/site.conf:/etc/nginx/sites-available/example.com.conf
        # - Copy Public Folder:
      - ./sites/example.com/root/public/:/var/www/example.com/public
    ports:
      - "80:80"
      - "443:443"
    depends_on:
      - php-fpm
    restart: always

If it’s mounted in PHP and is not mounted in Nginx, it will give a 404 Page Not Found error.

Example (Will throw 404 Page Not Found Error):

version: '3'

services:
  php-fpm:
    build:
      context: ./docker/php-fpm
    volumes:
      - ./sites/example.com/root/public/:/var/www/example.com/public
  nginx:
    build:
      context: ./docker/nginx
    volumes:
        #Nginx Global Configurations
      - ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./docker/nginx/conf.d/:/etc/nginx/conf.d

        #Nginx Configurations for you Sites:

        # - Nginx Server block
      - ./sites/example.com/site.conf:/etc/nginx/sites-available/example.com.conf
    ports:
      - "80:80"
      - "443:443"
    depends_on:
      - php-fpm
    restart: always

And this would work just fine (mounting on both sides) (Assuming everything else is well configured and you’re facing the same problem as me):

version: '3'

services:
  php-fpm:
    build:
      context: ./docker/php-fpm
    volumes:
      # Mount PHP for Public Folder
      - ./sites/example.com/root/public/:/var/www/example.com/public
  nginx:
    build:
      context: ./docker/nginx
    volumes:
        #Nginx Global Configurations
      - ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./docker/nginx/conf.d/:/etc/nginx/conf.d

        #Nginx Configurations for you Sites:

        # - Nginx Server block
      - ./sites/example.com/site.conf:/etc/nginx/sites-available/example.com.conf
        # - Copy Public Folder:
      - ./sites/example.com/root/public/:/var/www/example.com/public
    ports:
      - "80:80"
      - "443:443"
    depends_on:
      - php-fpm
    restart: always

Also here’s a Full working example project using Nginx/Php, for serving multiple sites:
https://github.com/Pablo-Camara/simple-multi-site-docker-compose-nginx-alpine-php-fpm-alpine-https-ssl-certificates

I hope this helps someone,
And if anyone knows more about this please let me know,
Thanks!

<?php

$username = $_POST['username'];
$password = $_POST['password'];

if ($username&&$password)
{
$connect = mysql_connect("sql-4.zerver.","bakugan609","s026y8pjtl");
mysql_select_db("bakugan609");

$query = mysql_query("SELECT * FROM members WHERE username='$username'")
$naumrows = mysql_num_rows($query);

if ($numrows!=0)
{
while ($row = mysql_fetch_assoc($query))
{
$dbusername = $row['username'];
$dbpassword = $row['password'];
}

if ($username&&$dbusername&&$password&&$dbpassword)
{

}    
else
echo "Неверный пароль!";

}    
else
    die ("Несуществует такого пользователя!");    
echo $numrows
}

else
{
echo die ("Неверный логин или пароль!");
}
?>

Если смотреть в исходном коде, так ничего там не написано!
Пишет, что файл не найден!

angry's user avatar

angry

8,64717 золотых знаков73 серебряных знака180 бронзовых знаков

задан 15 сен 2011 в 17:56

k0mar's user avatar

1

После $query = mysql_query("SELECT * FROM members WHERE username='$username' LIMIT 1")
$naumrows = mysql_num_rows($query)
не забудьте поставить ";", а дальше пишите так:

if (mysql_num_rows>0){
  $row = mysql_fetch_assoc($query))
     if ($password == $row['password']){
        //Тут код успешного входа
     } else {
         echo "Неверный пароль";
     }
} else {
  echo "Нет такого пользователя";
}

angry's user avatar

angry

8,64717 золотых знаков73 серебряных знака180 бронзовых знаков

ответ дан 16 сен 2011 в 4:05

DemoS's user avatar

DemoSDemoS

3,93119 серебряных знаков41 бронзовый знак

1

А почему бы вам не воспользоваться

WHERE login='$login' AND password='$password'

Чем перебирать всю базу?

angry's user avatar

angry

8,64717 золотых знаков73 серебряных знака180 бронзовых знаков

ответ дан 15 сен 2011 в 17:59

Андрей Аршинов's user avatar

Андрей АршиновАндрей Аршинов

2,5292 золотых знака15 серебряных знаков40 бронзовых знаков

У меня возникли проблемы с удалением файла с веб-сайта с использованием PHP.

У меня есть некоторый код, который загружает файл, (который работает), затем он изменяет размер, переименовывает, изменяет формат изображения и сохраняет загруженное изображение дважды. (Один раз как полноразмерное изображение, один раз как эскиз.)

Эта часть работает нормально, не стоит беспокоиться.

Однако я пишу код проверки ошибок, который удалит эти загруженные изображения, если форматы изображений не соответствуют расширению файлов.

(Например, создайте файл bmp в mspaint и сохраните его. Закройте краску, снова откройте файл bmp в paint, затем щелкните файл, сохраните как, а затем сохраните его как png.

Что происходит, краска просто изменит расширение, а не формат файла. Попробуйте открыть этот png с помощью моего php-скрипта, и он потерпит неудачу с ошибкой «image is not valid png».

Я написал пользовательскую функцию ошибки, чтобы сообщить пользователю, что формат изображения плохой. (Потому что лучше информировать пользователей о причинах проблемы, чем просто сообщать им о проблеме).

Приведенный ниже код будет отображать имя файла, который существует, но не пройдет проверку ‘file_exists’.

print( $imagename . ".jpg<br/>n" ); // Displays 'images/filename.jpg'
if ( file_exists( $imagename.".jpg" ) ) { unlink( $imagename.".jpg" ); print( "Image deleted<br/>n" ); }

Я попытался предварительно в ожидании «/», но безуспешно, и я не совсем уверен, почему файл не найден?

Есть намеки? (И извинения за огромный блок текста!)

2

Решение

Попробуйте добавить это в ваш скрипт:

print( getcwd() .'/'. $imagename . ".jpg<br/>n" ); // Displays full path

Это скажет вам, где PHP ищет файл для удаления. Если он отличается от того, где находится файл, вам нужно указать правильный путь PHP. Есть много способов достичь этого, два основных примера.

Используйте абсолютный путь: (работает, пока вы не переместите свой код)

$rootPath='/var/www/html/orsimilar/';
if ( file_exists( $rootPath. $imagename.".jpg" ) ) { unlink( $imagename.".jpg" ); print( "Image deleted<br/>n" ); }

Или используйте относительный:

$rootPath=__DIR__ . '/../pathtoimages';
if ( file_exists( $rootPath. $imagename.".jpg" ) ) { unlink( $imagename.".jpg" ); print( "Image deleted<br/>n" ); }

1

Другие решения

Спасибо всем за вашу помощь.

Использование getcwd () подтвердило, что он искал правильное местоположение для файла, однако проблема была с моей стороны.

Мой код создал новое пустое изображение, затем скопировал в него исходное изображение (это та часть, в которой он потерпит неудачу), а затем, если произошел сбой, он скопировал бы пустые изображения в конечное местоположение. В момент сбоя файлы фактически не существуют для file_exists, чтобы найти их «

Теперь я проверил наличие ошибок и не буду копировать файл, если возникла проблема.

Еще раз спасибо за вашу помощь, но еще раз, PEBCAK!

0

0 / 0 / 0

Регистрация: 18.08.2014

Сообщений: 12

1

30.03.2017, 13:14. Показов 1479. Ответов 2


Студворк — интернет-сервис помощи студентам

Создал сайт, всё работает, но есть проблема с формой обратной связи, в чем ошибка не как не пойму. Подскажите пожалуйста.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<? 
$adminemail="up@complexpart.od.ua";
$date=date("d.m.y");
$time=date("H:i"); 
$backurl="https://www.complexpart.od.ua/";
 
 
$name=$_POST['name']; 
 
$email=$_POST['email']; 
 
$subject=$_POST['subject']; 
 
$msg=$_POST['message']; 
 
 
 
if (!preg_match("|^([a-z0-9_.-]{1,20})@([a-z0-9.-]{1,20}).([a-z]{2,4})|is", 
strtolower($email))) 
 { 
  echo 
"<center>Вернитесь <a 
href='javascript:history.back(1)'><B>назад</B></a>. Вы 
указали неверные данные!"; 
  } 
 
 else 
 { 
$msg=" 
<p>Имя: $name</p> 
<p>E-mail: $email</p> 
<p>Телефон: $subject</p>
<p>Сообщение: $msg</p> 
 
"; 
 
mail("$adminemail", "$date $time Сообщение 
от $name", "$msg"); 
 
 
$f = fopen("message.txt", "a+"); 
 
fwrite($f," n $date $time Сообщение от $name"); 
 
fwrite($f,"n $msg "); 
 
fwrite($f,"n ---------------"); 
 
fclose($f); 
 
print "<script language='Javascript'><!-- 
function reload() {location = "$backurl"}; setTimeout('reload()', 6000); 
//--></script> 
 
$msg 
 
<p>Сообщение отправлено! Подождите, сейчас вы будете перенаправлены на главную страницу...</p>";  
exit; 
 
 } 
 
?>

И html код

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<div class="col-md-12">
                                <div class="contact-form">
                                    <div class="row">
                                        <form action="<post.php" method="post">
                                            <fieldset class="col-md-4">
                                                <input id="name" type="text" name="name" placeholder="Имя">
                                            </fieldset>
                                            <fieldset class="col-md-4">
                                                <input type="email" name="email" id="email" placeholder="Email">
                                            </fieldset>
                                            <fieldset class="col-md-4">
                                                <input type="text" name="subject" id="subject" placeholder="Телефон">
                                            </fieldset>
                                            <fieldset class="col-md-12">
                                                <textarea name="msg" id="msg" placeholder="msg"></textarea>
                                            </fieldset>
                                            <fieldset class="col-md-12">
                                                <input type="submit" name="send" value="Send Message" id="submit" class="button">
                                            </fieldset>
                                       </form>
                                    </div> <!-- /.row -->
                                </div> <!-- /.contact-form -->
                            </div> <!-- /.col-md-12 -->

В итоге выводит, ошибку в браузере, что php файл не найден. Если кто то сталкивался с таким, подскажите пожалуйста!



0



Получилось разобрться самому.

В общем в логах была следующая ошибка:

PHP Error: Error loading template for login in /usr/share/roundcubemail/program/include/rcmail_output_html.php on line 804 (GET /webmail/)

проще говоря, не может подключиться к шаблону. В моем случае причина была в том, что в конфиге /etc/roundcubemail/config.inc.php в строке

$config[‘skin’] = ‘было какое-то левое название’;

Идем сюда /usr/share/roundcubemail/skins/ и смотрим есть ли у вас такой скин тут. У меня не было, в папке лежал один единственный elastic. Его я и прописал

$config[‘skin’] = ‘elastic’;

Все заработало.

Понравилась статья? Поделить с друзьями:
  • Php отключить вывод ошибок в коде
  • Php отключить вывод ошибки на экран
  • Php остановить выполнение при ошибке
  • Php обработка ошибок на форме
  • Php обработка ошибок и исключений