CyberFolks - Error 403 Kategoria: Hosting | Tagi: 403, cyberfolks | Autor: Bartłomiej Gałęzia

Jeśli na którejś stronie hostowanej w CyberFolks.pl wyskoczy Error 403 to jest to kwestia uprawnień do plików.

Wystarczy wykonać w katalogu z plikami strony polecenia:

find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;

Usuwanie pierwszej linii z długiego pliki Kategoria: Linux | Tagi: mysqldump, mysql, tail | Autor: Bartłomiej Gałęzia

tail -n +2 source_file.txt > destination_file.txt

Przydatne przy odtwarzaniu bazy danych gdzie mysqldump dodaje na początku zabezpieczenie:

/*!999999\- enable the sandbox mode */

Źródło: https://stackoverflow.com/questions/339483/how-can-i-remove-the-first-line-of-a-text-file-using-bash-sed-script

Zenbox - Zamawianie konta o określonej nazwie Kategoria: Hosting | Tagi: zenbox.pl | Autor: Bartłomiej Gałęzia

Trzeba do nich napisać na kontakt@zenbox.pl przez zamówieniem konta:

W dniu 18.09.2024 o 12:53, Konrad Matus | Zenbox.pl pisze:
> przed rejestracją hostingu należy do nas napisać, że chce Pan własną nazwę użytkownika hostingu. Następnie po odpowiedzi od mnicha który podejmie zgłoszenie będzie mógł Pan przejść do zamawiania usługi. Osoba, która będzie odpowiadała za akceptację zamówień zostanie powiadomiona o tej sytuacji.

Imagick->readImage error Kategoria: PHP | Autor: Bartłomiej Gałęzia

Poniższy skrypt:

$imagick = new Imagick();
$imagick->setResolution(150, 150);
$imagick->readImage($source_file . '[0]');
$imagick->writeImages($result_file, false);

Wywala błąd:

Fatal error: Uncaught ImagickException: FailedToExecuteCommand `'gs' -sstdout=%stderr -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 '-sDEVICE=pngalpha' -dTextAlphaBits=4 -dGraphicsAlphaBits=4 '-r150x150' -dPrinted=false -dFirstPage=1 -dLastPage=1 '-sOutputFile=/tmp/magick-pyOYVsKi7i7SAXNMW5EtwPaRASHaOYu5%d' '-f/tmp/magick-cz6OETDf_gRuXDy_HbCTsBN12F0rxl6A' '-f/tmp/magick-i9pxxZG7729nyd99OG23sqQCQHf9iMH6'' (32512) @ error/ghostscript-private.h/ExecuteGhostscriptCommand/74

Rozwiązanie:

doinstalować ghostscript

 

Źródło: https://stackoverflow.com/questions/24298815/php-uncaught-exception-imagickexception-with-message-failedtoexecutecommand

Zenbox zgłoszenie [#DOPK-2931-RYJH] 

CI3 - Where (OR AND) Kategoria: Codeigniter | Autor: Bartłomiej Gałęzia

$this->db->group_start();
$this->db->where('contracts_id_client_purchaser', $id_client);
$this->db->or_where('contracts_id_client_supplier', $id_client);
$this->db->group_end();
$this->db->where('contracts_active', 1);
$this->db->order_by('id_contracts', 'desc');
$query = $this->db->get('contracts');
php spark make:migration Clients
vim app/Database/2024-01-01-000000_Clients.php
php spark migrate
php spark make:model Clients_model
php spark make:controller Clients

Źródło: https://medium.com/@choirulihwan/how-to-create-crud-operation-with-codeigniter-4-and-react-js-fb54d28c923c

Laravel 10 - CRUD example Kategoria: Laravel | Autor: Bartłomiej Gałęzia

1. Stwórz model

php artisan make:model Company -m

wynik

INFO Model [app/Models/Company.php] created successfully.
INFO Migration [database/migrations/2024_04_21_085712_create_companies_table.php] created successfully.

Zobacz całość

Od razu po ściągnięciu nowego Laravela nie da się uruchomić strony bo system nie znajduje tabeli sessions w bazie.

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'sessions' doesn't exist

Można:

1. Wykonać migracje i utworzyć tabelę z sesjami

2. Wyłączyć zapisywanie sesji w bazie:

vim .env
SESSION_DRIVER=database -> SESSION_DRIVER=file

Źródło: https://arjunamrutiya.medium.com/a-comprehensive-guide-to-laravel-sessions-understanding-and-utilizing-session-methods-a454ae9c55e4

Problem:

PHP Warning: Cannot load module "http" because required module "raphf" is not loaded in Unknown on line 0

Rozwiązanie:

sudo apt install php-raphf

Źródło: https://askubuntu.com/questions/1386960/php-warning-cannot-load-module-http-because-required-module-raphf-is-not-lo

Podczas importu bazy z pliku:

mysql -u root -ppassword -h localhost database < database.sql

Wyskoczył błąd:

ERROR 1153 (08S01) at line 2494: Got a packet bigger than 'max_allowed_packet' bytes

Rozwiązanie:

mysql --max_allowed_packet=100M -u root -ppassword -h localhost database < database.sql

Źródło: https://stackoverflow.com/questions/93128/mysql-error-1153-got-a-packet-bigger-than-max-allowed-packet-bytes

Przy próbie utworzenia symlinku na zenbox.pl lub przy próbie sprawdzenia czy plik istnieje (file_exists($file_path)) otrzymuję takie błędy:

Warning: realpath(): open_basedir restriction in effect. 
File(/home/mojekonto/domains/mojadomena.pl/public_html/system) 
is not within the allowed path(s): 
(/home/mojekonto/domains/mojadomena.stronazen.pl:/tmp:/var/tmp:/home/mojekonto/.tmp:/home/mojekonto/.php:/usr/local/php:/opt/alt:/etc/pki) in 
/home/mojekonto/domains/mojadomena.pl/public_html/index.php
Severity: Warning --> file_exists(): open_basedir restriction in effect.
File(https://blog.napraw.to/my_files/files/notes/445/plik_pdf.pdf) 
is not within the allowed path(s): 
(/home/mojekonto/domains/mojadomena.pl:/tmp:/var/tmp:/home/mojekonto/.tmp:/home/mojekonto/.php:/usr/local/php:/opt/alt:/etc/pki) 
/home/mojekonto/domains/mojadomena.pl/public_html/application/views/admin/docs/last_file_preview_view.php 13

Sam nie mogę nic z tym zrobić. Trzeba to zgłosić do supportu zenbox.pl aby wyłączyli zabezpieczenie open_basedir.

Poniżej odpowiedź od nich:

"... powodem problemu zgodnie z komunikatem błędu jest włączone zabezpieczenie open_basedir w obu domenach - aby symlink mógł działać koniecznie jest jego wyłączenie..."

"Czy ja jestem w stanie to zrobić samodzielnie?"

"Niestety nie, to się wykonuje na poziomie administracji serwerem."

Na serwerach cyberfolks.pl domyślnie działa połączenie przez IPv6 przez co nie da się pobierać plików z niektórych serwerów:

wget -c https://cdn1.midocean.com/image/700X700/mo9996-13.jpg
--2023-05-24 14:23:26-- https://cdn1.midocean.com/image/700X700/mo9996-13.jpg
Resolving cdn1.midocean.com (cdn1.midocean.com)... 2600:9000:26de:c000:14:1179:cb80:93a1, 2600:9000:26de:c00:14:1179:cb80:93a1, 2600:9000:26de:5200:14:1179:cb80:93a1, ...
Connecting to cdn1.midocean.com

Należy wymusić wówczas transmisję po IPv4:

wget --inet4-only  -c https://cdn1.midocean.com/image/700X700/mo9996-13.jpg

Jeśli korzystamy z pobierania przez file_get_contents() polecenie powinno wyglądać tak:

file_get_contents($image_url, false, stream_context_create(['socket' => ['bindto' => '0:0']]))

Źródło: https://twitter.com/McSodbrenner/status/773540936764821504

Laravel - Modele Kategoria: Laravel | Autor: Bartłomiej Gałęzia

php artisan make:model Post

Model "Post" domyślnie odnosi się do tabeli "posts" w bazie.

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
// use HasFactory;
}

W kontrolerze można odwoływać się do funkcji dziedziczonych z Eloquent\Model:

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Post;
class PostController extends Controller {
public function index() {
$posts = Post::all();
return view('pages/posts', ['posts' => $posts]);
}
}

 

W linii poleceń przechodzimy do głównego katalogu strony i wpisujemy:

php artisan make:migration create_posts_table

Następnie edytujemy wygenerowany plik i dopisujemy własne pola:

vim database/migrations/2023_04_25_131201_create_posts_table.php
...

Schema::create('posts', function (Blueprint $table) {
            $table->bigIncrements('id'); //auto increment
            $table->string('title',500);
            $table->string('type',20)->nullable();
            $table->string('image',200)->nullable();
            $table->text('content')->nullable();
            $table->tinyInteger('active')->nullable()->default(1);
            $table->timestamp('date_create')->useCurrent();
            $table->timestamps();
        });
        
...

Następnie uruchamiamy migrację dla pojedynczej tabeli:

php artisan migrate --path=database/migrations/2023_04_25_131201_create_posts_table.php

lub dla wszystkich tabel:

php artisan migrate

 

Źródło: https://stackoverflow.com/questions/45473624/laravel-migrate-specific-files-from-migrations

https://laravel.com/docs/10.x/migrations

Po utworzeniu nowego kontrolera PostController.php nie da się go wywołać.

php artisan make:controller PostController

Zwracany jest jedynie błąd:

Target class [PostController] does not exist.

Rozwiązanie:

vim app/Http/Providers/RouteServiceProvider.php
class RouteServiceProvider extends ServiceProvider
{
    public const HOME = '/home';
    protected $namespace = 'App\Http\Controllers'; //dodane
    
    ...
    
    Route::middleware('web')
	->namespace($this->namespace)  //dodane
        ->group(base_path('routes/web.php'));
    
    ...

Źródło: https://www.nicesnippets.com/blog/laravel-8-target-class-postcontroller-does-not-exist-solved

aptitude install php-cli php-mailparse

Wkhtmltopdf - header i footer Kategoria: PHP | Tagi: wkhtmltopdf | Autor: Bartłomiej Gałęzia

wkhtmltopdf --print-media-type --header-html header.html --footer-html footer.html https://google.pl/ google.pdf

Laravel - PHP 8.2 install Kategoria: Laravel | Autor: Bartłomiej Gałęzia

composer create-project laravel/laravel example-app

or if you want to install specific version

composer create-project laravel/laravel:10.x example-app

copy index.php and .htaccess from public to root

cp /home/www/laravel/public/index.php /home/www/laravel/index.php
cp /home/www/laravel/public/.htaccess /home/www/laravel/.htaccess
vim /home/www/laravel/index.php
...

if (file_exists($maintenance = __DIR__ . '/storage/framework/maintenance.php')) {
    require $maintenance;
}

...

require __DIR__ . '/vendor/autoload.php';

...

$app = require_once __DIR__ . '/bootstrap/app.php';

...
vim config/app.php
'url' => env('APP_URL', 'http://localhost/laravel') #pierwszy parametr jest pobierany z pliku .env a drugi to default jeśli w .env nie ma takiej zmiennej

Odwołanie do zmiennych w configu

<?php echo config('app.url'); #pierwsza część "app" to nazwa pliku config a druga to nazwa zmiennej ?>

Wyświetlenie zmiennej w widoku

{{ $post['content'] }} #wyświetla jako surowy tekst
{!! $post['content'] !!} #wyświetla jako HTML

Źródło: https://laravel.com/docs/9.x

Codeigniter 4 - PHP 8.2 install Kategoria: Codeigniter 4 | Autor: Bartłomiej Gałęzia

aptitude install php8.2 php8.2-intl libapache2-mod-php8.2
vim /etc/apache2/apache2.conf
<Directory /home/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
vim /etc/php/8.2/cli/php.ini
extension=intl
service apache2 restart
composer create-project codeigniter4/appstarter moj_projekt

In app

vim app/Config/App.php
public string $baseURL = 'http://localhost/ci4/';

copy index.php and .htaccess from public to root

cp /home/www/ci4/public/index.php /home/www/ci4/index.php
cp /home/www/ci4/public/.htaccess /home/www/ci4/.htaccess
vim /home/www/ci4/index.php
require FCPATH . 'app/Config/Paths.php';

Routing - żeby każdy kontroler był odrazu dostępny przez URL

vim app/Config/Routes.php
$routes->setAutoRoute(true);

Base_url() z ukośnikiem na końcu

vim /system/Helpers/url_helper.php
//return rtrim(site_url($relativePath, $scheme, $config), '/');
return site_url($relativePath, $scheme, $config);

Disable debugbar:

vim app/Config/Filters.php
public array $globals = [
        'before' => [
        ],
        'after' => [
            //'toolbar',
        ],
    ];

Źródło:

https://www.tutsmake.com/codeigniter-4-remove-public-and-index-php-from-url/

https://www.studentstutorial.com/codeigniter/remove_public_index.php

https://codeigniter4.github.io/userguide/testing/debugging.html

Wyszukaj

Zapisz się do newsletera