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
8,64717 золотых знаков73 серебряных знака180 бронзовых знаков
задан 15 сен 2011 в 17:56
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
8,64717 золотых знаков73 серебряных знака180 бронзовых знаков
ответ дан 16 сен 2011 в 4:05
DemoSDemoS
3,93119 серебряных знаков41 бронзовый знак
1
А почему бы вам не воспользоваться
WHERE login='$login' AND password='$password'
Чем перебирать всю базу?
angry
8,64717 золотых знаков73 серебряных знака180 бронзовых знаков
ответ дан 15 сен 2011 в 17:59
Андрей АршиновАндрей Аршинов
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 | ||
|
И html код
HTML5 | ||
|
В итоге выводит, ошибку в браузере, что 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’;
Все заработало.