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 {} \;
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 */
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.
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
Zenbox zgłoszenie [#DOPK-2931-RYJH]
$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
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
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
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
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
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
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 --print-media-type --header-html header.html --footer-html footer.html https://google.pl/ google.pdf
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
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