Arch Linux LAMP Kurulumu ve phpMyAdmin Hatalarını Çözme
Arch Linux üzerinde PHP tabanlı projeleri çalıştırmak için en kullanışlı yapılardan biri LAMP ortamıdır.
LAMP; Linux, Apache, MariaDB/MySQL ve PHP bileşenlerinden oluşur. Bu yapı sayesinde PHP projelerini bilgisayarda yerel olarak çalıştırabilir, veritabanlarını phpMyAdmin üzerinden yönetebiliriz.
Bu yazıda Arch Linux üzerinde LAMP kurulumu yaparken karşılaşılabilecek hataları ve çözümlerini adım adım anlatıyorum. Özellikle phpMyAdmin’e girildiğinde PHP kodlarının düz metin olarak görünmesi, mysqli uzantısı eksik hatası, blowfish_secret uyarısı, TempDir erişim problemi ve Apache’nin /home klasörü altındaki www dizinini okuyamaması gibi sorunlara değineceğiz.
1. Gerekli Paketlerin Kurulması
İlk olarak Apache, MariaDB, PHP ve phpMyAdmin paketlerini kuruyoruz:
sudo pacman -Syu
sudo pacman -S apache mariadb php php-apache phpmyadminMariaDB veritabanını ilk kez kullanmadan önce veritabanı dizinini oluşturuyoruz:
sudo mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysqlArdından MariaDB ve Apache servislerini başlatıyoruz:
sudo systemctl enable --now mariadb
sudo systemctl enable --now httpd2. phpMyAdmin’e Erişim Ayarı
Arch Linux üzerinde phpMyAdmin kurulduktan sonra Apache’ye otomatik olarak tanımlı gelmeyebilir. Bu yüzden Apache’ye phpMyAdmin için alias tanımlamak gerekir.
sudo nano /etc/httpd/conf/extra/phpmyadmin.confDosyanın içine şu ayarları ekliyoruz:
Alias /phpmyadmin "/usr/share/webapps/phpMyAdmin"
DirectoryIndex index.php
AllowOverride All
Options FollowSymLinks
Require all granted
Daha sonra Apache ana yapılandırma dosyasını açıyoruz:
sudo nano /etc/httpd/conf/httpd.confDosyanın sonuna şu satırı ekliyoruz:
Include conf/extra/phpmyadmin.confApache’yi yeniden başlatıyoruz:
sudo systemctl restart httpdArtık phpMyAdmin’e şu adresten erişebiliriz:
http://localhost/phpmyadmin3. PHP Kodları Düz Metin Görünüyorsa
phpMyAdmin’e girildiğinde PHP kodları düz metin olarak görünüyorsa Apache PHP dosyalarını çalıştırmıyor demektir. Bu durumda Apache’nin PHP modülünü aktif etmek gerekir.
Apache yapılandırma dosyasını açıyoruz:
sudo nano /etc/httpd/conf/httpd.confŞu satırı yorum satırı yapıyoruz:
#LoadModule mpm_event_module modules/mod_mpm_event.soArdından mpm_prefork modülünün açık olduğundan emin oluyoruz:
LoadModule mpm_prefork_module modules/mod_mpm_prefork.soDosyanın sonuna şu satırları ekliyoruz:
LoadModule php_module modules/libphp.so
AddHandler php-script .php
Include conf/extra/php_module.confYapılandırmayı test ediyoruz:
sudo apachectl configtestÇıktı şu şekildeyse ayar dosyasında sorun yoktur:
Syntax OKApache’yi yeniden başlatıyoruz:
sudo systemctl restart httpd4. mysqli Uzantısı Eksik Hatası
phpMyAdmin’de şu hata görülebilir:
mysqli uzantısı eksik. Lütfen PHP yapılandırmanızı denetleyin.Bu hata PHP’nin MySQL/MariaDB bağlantı eklentisinin aktif olmadığını gösterir. Çözmek için PHP yapılandırma dosyasını açıyoruz:
sudo nano /etc/php/php.iniŞu satırları buluyoruz:
;extension=mysqli
;extension=pdo_mysqlBaşlarındaki noktalı virgülü kaldırıyoruz:
extension=mysqli
extension=pdo_mysqlApache’yi yeniden başlatıyoruz:
sudo systemctl restart httpdKontrol için şu komutu kullanabiliriz:
php -m | grep -E "mysqli|pdo_mysql"5. phpMyAdmin Kullanıcı Adı ve Şifre
phpMyAdmin’in ayrı bir kullanıcı adı ve şifresi yoktur. MariaDB/MySQL kullanıcı adı ve şifresiyle giriş yapılır.
MariaDB’ye root yetkisiyle girmek için:
sudo mariadbphpMyAdmin için yeni kullanıcı oluşturmak için:
CREATE USER 'admin'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;Daha sonra phpMyAdmin giriş ekranında şu bilgiler kullanılabilir:
Kullanıcı adı: admin
Şifre: 123456Güvenlik için basit şifreler yerine daha güçlü bir şifre kullanmak daha doğru olur.
6. phpMyAdmin Blowfish Secret Uyarısı
phpMyAdmin şu uyarıyı verebilir:
Yapılandırma dosyası, tanımlama bilgisi şifrelemesi için geçerli bir anahtara ihtiyaç duyar.Bu uyarı config dosyasında blowfish_secret değerinin eksik olduğunu gösterir.
sudo nano /etc/webapps/phpmyadmin/config.inc.phpŞu satırı buluyoruz:
$cfg['blowfish_secret'] = '';Buraya tam 32 karakterlik bir değer yazıyoruz:
$cfg['blowfish_secret'] = 'a8Kz91LmPq2Rtx7YbN4vDs6WpQ3nHu5E';
Bu değer tam 32 karakter olmalıdır. Daha uzun yazılırsa phpMyAdmin şu uyarıyı verir:
Yapılandırma dosyasındaki tanımlama bilgisi şifreleme anahtarı gereğinden uzun.
Sadece 32 bayt uzunluğunda olmalıdır.32 karakterlik rastgele anahtar üretmek için:
openssl rand -base64 24 | cut -c1-327. phpMyAdmin TempDir Uyarısı
phpMyAdmin şu uyarıyı gösterebilir:
$cfg['TempDir'] (/usr/share/webapps/phpMyAdmin/tmp/) erişilebilir değil.Bu klasör yoksa veya Apache tarafından yazılamıyorsa bu uyarı çıkar. Çözüm için:
sudo mkdir -p /usr/share/webapps/phpMyAdmin/tmp
sudo chown -R http:http /usr/share/webapps/phpMyAdmin/tmp
sudo chmod 750 /usr/share/webapps/phpMyAdmin/tmpSonra Apache’yi yeniden başlatıyoruz:
sudo systemctl restart httpd8. Site Dosyaları Hangi Klasöre Atılır?
Arch Linux’ta Apache’nin varsayılan web klasörü şudur:
/srv/http/Yani site dosyaları buraya atılabilir:
/srv/http/index.php
/srv/http/db.php
/srv/http/assets/Tarayıcıdan erişim:
http://localhost/9. Apache Ana Klasörünü /home/mustafast/www Yapmak
Varsayılan /srv/http yerine kullanıcı klasörü altında www dizini kullanmak isteyebiliriz. Bunun için önce klasörü oluşturuyoruz:
mkdir -p /home/mustafast/wwwTest dosyası ekliyoruz:
echo "" > /home/mustafast/www/index.phpİzinleri ayarlıyoruz:
sudo chown -R mustafast:http /home/mustafast/www
sudo chmod 755 /home/mustafast
sudo chmod -R 755 /home/mustafast/wwwApache yapılandırma dosyasını açıyoruz:
sudo nano /etc/httpd/conf/httpd.confŞu satırı buluyoruz:
DocumentRoot "/srv/http"Bunu şöyle değiştiriyoruz:
DocumentRoot "/home/mustafast/www"Aynı dosyada şu bloğu buluyoruz:
Bunu da şöyle değiştiriyoruz:
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
10. DocumentRoot Okunamıyor Hatası
Apache yeniden başlatılırken şu hata alınabilir:
DocumentRoot '/home/mustafast/www' is not a directory, or is not readableBu hata klasörün olmadığını veya Apache’nin klasöre erişemediğini gösterir. Önce klasör ve izinler kontrol edilir:
ls -ld /home/mustafast
ls -ld /home/mustafast/wwwGerekirse tekrar izin verilir:
mkdir -p /home/mustafast/www
sudo chown -R mustafast:http /home/mustafast/www
sudo chmod 755 /home/mustafast
sudo chmod -R 755 /home/mustafast/www11. ProtectHome Sorunu
Arch Linux’ta Apache servisinde ProtectHome aktif olabilir. Bu ayar Apache’nin /home klasörünü görmesini engeller.
Servis ayarını kontrol etmek için:
sudo systemctl cat httpdÇıktıda şu satır varsa Apache /home dizinine erişemeyebilir:
ProtectHome=onBunu düzeltmek için override dosyası oluşturuyoruz. Fish shell kullanıyorsanız şu komut daha uygundur:
sudo mkdir -p /etc/systemd/system/httpd.service.d
printf '[Service]\nProtectHome=false\n' | sudo tee /etc/systemd/system/httpd.service.d/override.conf > /dev/nullSystemd ayarlarını yeniliyoruz:
sudo systemctl daemon-reloadKontrol ediyoruz:
sudo systemctl cat httpd | grep ProtectHomeŞuna benzer çıktı görünmelidir:
ProtectHome=on
ProtectHome=falseSonra Apache yeniden başlatılır:
sudo systemctl restart httpd12. ServerName Uyarısı
Apache config test sırasında şu uyarıyı verebilir:
AH00558: Could not reliably determine the server's fully qualified domain nameBu genellikle kritik bir hata değildir. Uyarıyı kaldırmak için Apache ayar dosyasına şu satır eklenebilir:
ServerName localhostSonra yapılandırma test edilir:
sudo apachectl configtestÇıktı şu şekildeyse sorun yoktur:
Syntax OKSonuç
Arch Linux üzerinde LAMP kurulumu Windows’taki WampServer kadar tek tıkla ilerlemeyebilir. Ancak Apache, MariaDB, PHP ve phpMyAdmin doğru yapılandırıldığında oldukça güçlü ve temiz bir yerel geliştirme ortamı elde edilir.
Bu süreçte karşılaşılabilecek başlıca sorunlar Apache’nin PHP dosyalarını düz metin göstermesi, mysqli uzantısı eksik hatası, phpMyAdmin blowfish_secret uyarısı, TempDir erişim hatası, Apache DocumentRoot erişim hatası ve ProtectHome nedeniyle /home dizinine erişememe problemidir.
Tüm bu ayarlar tamamlandığında Arch Linux üzerinde PHP projelerini rahatlıkla çalıştırabilir, veritabanı işlemlerini phpMyAdmin üzerinden yönetebilir ve kendi www klasörünüzü yerel geliştirme ortamı olarak kullanabilirsiniz.