Hiển thị các bài đăng có nhãn Apache. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn Apache. Hiển thị tất cả bài đăng

Thứ Tư, 13 tháng 3, 2019

Khắc phục lỗi không chạy hàm exec của PHP trong Apache2 Service

Một ngày đẹp trời, khi có nhu cầu viết một controller thực thi lệnh pull và push git :D :D nhằm mục đích release new version cho server =)). Vấn đề nan giải bắt đầu nảy sinh. Cụ thể tôi làm như sau:

exec("cd /d $projectdir && git pull");
// /d trong windows có nghĩa là di chuyển lệnh cd sang ổ đĩa khác :D.

Câu lệnh hoàn toàn chạy tốt trong môi trường dev: php -S localhost:6996, tuy nhiên khi release lên server apache thì hoàn toàn ngậm hành, im phăng phắc không báo bất kỳ lỗi gì khác, chỉ biết return 1 :(.

Sau quá trình tìm kiếm thì giải pháp là: 
**Root: https://stackoverflow.com/questions/28424664/apache-settings-block-php-exec-from-executing

1. Trong file httpd.conf thêm dòng cấu hình sau:
php_admin_flag safe_mode Off
safe_mode Off #neu dang On thi Off
2. Trong file php.ini kiểm tra cấu hình disabled_functions có liệt kê hàm exec hay không, nếu có thì bỏ đi.

*****Note ngoài lề:
Trong windows, mặc định khi mở cmd sẽ là thư mục user tại ổ C, nếu muốn cd sang ổ D, cần phải gõ lệnh D: sau khi gõ lệnh cd path. Để khắc phục tình trạng này, cần gõ lệnh: cd /d path ----- ez game


:D :D :D

Thứ Ba, 16 tháng 10, 2018

Một số vấn đề thường gặp khi cấu hình Python 3 cho Apache 2.4 trên hệ điều hành Windows

Ghi chú một vài vấn đề khi setup Apache2.4 Python 3.5
  • Bước 1: cài đặt mod_wsgi vào python bằng lệnh pip install mod_wsgi, khi cài đặt buóc này cần chú ý: 
    • Thiết lập MOD_WSGI_APACHE_ROOTDIR vào thư mục Apache, lưu ý phiên bản compile của Apache phải khớp với Python và VC++, chỉ dùng chung 1 phiên bản 32/64/amd
    • Kiểm tra phiên bản 32/64 bit giữa python và Visual C++ được cài trong máy, 2 bản này phải giống nhau
    • Path phải được cấu hình dẫn đến thư mục "bin" của Visual C++ và Python
    • Cài đặt windows kit: sao đó thêm đường dẫn dạng "C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86" vào Path, sao cho nhìn thấy 2 tập tin rc.exe và rcdll.dll
  • Bước 2: chạy lệnh "mod_wsgi-express module-config" sau đó copy toàn bộ cấu hình vào apache
  • Bước 3: Cấu hình Apache vhost với template như sau, lưu ý thay đổi các đường dẫn:
# mod-wsgi enabled virtual host

WSGIPassAuthorization On
LoadFile "<project_path>/Python35/python35.dll"
LoadModule wsgi_module "<project_path>/Python35/lib/site-packages/mod_wsgi-4.6.4-py3.5-win32.egg/mod_wsgi/server/mod_wsgi.cp35-win32.pyd"
WSGIPythonHome "<project_path>/Python35"
WSGIPythonPath '<project_path>/app;<project_path>/Python35;<project_path>/Python35/Lib/site-packages'

<VirtualHost *:_port_>
    ServerName servername.vn
    ServerAdmin webmaster@example.org
    DocumentRoot <project_path>/app/app

    WSGIScriptAlias / '<project_path>/app/app/wsgi.py'                    

    #Alias /static/ <project_path>/app/app/static_root/
    #Alias /uploaded/ <project_path>/app/app/uploaded/

    <Directory "<project_path>/app/app/">
         <Files wsgi.py>
             Order deny,allow
             Allow from all
             Require all granted
         </Files>

        Order allow,deny
        Options Indexes FollowSymLinks
        Allow from all
        IndexOptions FancyIndexing

    </Directory>
    <Proxy *>
        Order allow,deny
        Allow from all
    </Proxy>
</VirtualHost>