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
aptitude install postgresql postgresql-contrib php-pgsql
check version
sudo -u postgres psql -c "SELECT version();"
vim /etc/postgresql/11/main/pg_hba.conf
local all postgres trust
service postgresql restart
sudo su - postgres -c "createuser miethek" //create user sudo su - postgres -c "createdb empg" //create db
GRANT ALL PRIVILEGES ON DATABASE empg TO miethek;
Połączenie z innych adresów:
vim /etc/postgresql/11/main/postgresql.conf
listen_addresses = '*'
vim /var/lib/pgsql/data/pg_hba.conf
host all all 0.0.0.0/0 md5
service postgresql restart
Źródło: https://linuxize.com/post/how-to-install-postgresql-on-debian-10/
$serverName = "serverName";
$connectionInfo = array( "Database"=>"DbName",
"UID"=>"UserName",
"PWD"=>"Password",
"Encrypt"=>true,
"TrustServerCertificate"=>true);
$conn = sqlsrv_connect( $serverName, $connectionInfo);
Źródło: https://stackoverflow.com/questions/14959492/connecting-to-mssql-from-php-securely-with-encryption
add-apt-repository ppa:ondrej/php -y apt-get update apt-get install aptitude vim mc nmap curl apache2 php php-dev php-xml php-pear apt-get install unixodbc-dev sudo pecl install sqlsrv sudo pecl install pdo_sqlsrv printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/8.1/mods-available/sqlsrv.ini printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/8.1/mods-available/pdo_sqlsrv.ini phpenmod -v 8.1 sqlsrv pdo_sqlsrv curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - curl https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/prod.list > /etc/apt/sources.list.d/mssql-release.list sudo apt-get update sudo ACCEPT_EULA=Y apt-get install -y msodbcsql18 sudo ACCEPT_EULA=Y apt-get install -y mssql-tools18 echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc source ~/.bashrc sudo apt-get install -y unixodbc-dev service apache2 restart
sudo apt install libheif-examples
for file in *.HEIC; do heif-convert $file ${file%.HEIC}.jpg; done
Źródło: https://ubuntuhandbook.org/index.php/2021/06/open-heic-convert-jpg-png-ubuntu-20-04/
HTML
<div class="new-page"></div>
CSS
@media print {
.new-page {
page-break-after: always;
}
}
lub bezpośrednio w HTML
<div style="page-break-after: always;"></div>
Ważne!
Znacznik "new-page" nie może być wewnątrz znacznika <section> bo nie zadziała.
Czasami (np.: na serwerach CyberFolks) trzeba dodaj w komendzie --print-media-type
wkhtmltopdf --print-media-type http://domena.pl/file.html file_pdf.pdf
Przy próbie połączenia przez CURL z Cyber Folks do Zenbox pokazuje się błąd.
"Please wait while your request is being verified..."
"500 Internal Server Error openresty".
Trzeba to zgłosić do Zenboxa, żeby odblokowali IP serwera źródłowego na firewallu.
https://panel.zenbox.pl/index.php?m=pomoc&page=show-ticket&id=1098515
[#QJIV-9351-ECMM] - ticket z 2024.01.11 nr 1314686
yum remove epel-release yum clean all sudo yum -y install yum-utils sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm sudo yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional sudo yum install certbot sudo yum install certbot-nginx
Źródło: https://stackoverflow.com/questions/53545436/no-package-certbot-available
Menu -> Settings -> Keyboard -> Application shortcuts -> [+Add]
dm-tool lock -> Super + L
Źródło: https://askubuntu.com/questions/1242110/after-upgrading-to-ubuntu-20-04-lockscreen-not-working