Setup PHP Agent
- Agent is available for PHP 7.2 - 8.x.
- Build from source.
- Configure
php.ini
.
Requirements
- GCC / Clang
- Rustc 1.65+
- Cargo
- Libclang 9.0+
- Make
- Protoc
Install dependencies
For Debian-base OS
sudo apt install gcc make llvm-13-dev libclang-13-dev protobuf-c-compiler protobuf-compiler
For Alpine Linux
apk add gcc make musl-dev llvm15-dev clang15-dev protobuf-c-compiler
Install Rust globally
The officially recommended way to install Rust is via rustup
.
Notice: Because the source code toolchain is override by
rust-toolchain.toml
, so if you don’t need multi version Rust, we recommend to install Rust by these way:
Install through OS package manager (The Rust version in the source must be >= 1.65).
Through
rustup
but setdefault-toolchain
to none.curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --default-toolchain none
Install
Notice: If you compile
skywalking_agent
in Alpine Linux, you have to disablecrt-static
, otherwise the problem will be throw: “the libclang shared library at /usr/lib/libclang.so.15.0.7 could not be opened: Dynamic loading not supported”.You can disable
crt-static
by environment variable:export RUSTFLAGS="-C target-feature=-crt-static"
Install from pecl.net
pecl install skywalking_agent
Install from the source codes
git clone --recursive https://github.com/apache/skywalking-php.git
cd skywalking-php
phpize
./configure
make
make install
Configure
For scenarios where php-fpm runs in the foreground (php-fpm -F
), or where a PHP script starts
a single Swoole server, you can use the grpc
reporter mode.
For scenarios where php-fpm runs as a daemon, or where a PHP script forks multiple Swoole servers,
it is recommended to use the standalone
reporter mode.
Configure skywalking agent in your php.ini
.
[skywalking_agent]
extension = skywalking_agent.so
; Enable skywalking_agent extension or not.
skywalking_agent.enable = Off
; Reporter type, optional values are `grpc`, `kafka` and `standalone`.
skywalking_agent.reporter_type = grpc
; Log file path.
skywalking_agent.log_file = /tmp/skywalking-agent.log
; Log level: one of `OFF`, `TRACE`, `DEBUG`, `INFO`, `WARN`, `ERROR`.
skywalking_agent.log_level = INFO
; Address of skywalking oap server.
skywalking_agent.server_addr = 127.0.0.1:11800
; Application service name.
skywalking_agent.service_name = hello-skywalking
Refer to the Configuration section for more configuration items.
Notice: It is not recommended to enable
skywalking_agent.enable
by default globally, because skywalking agent will modify the hook function and fork a new process to be a worker. Enabling it by default will cause extra meaningless consumption when skywalking agent is not needed (such as simply executing a php script).
Run
Start php-fpm
server:
php-fpm -F -d "skywalking_agent.enable=On"
Notice: It is necessary to keep the
php-fpm
process running in the foreground (by specifying the-F
parameter, etc.), or switch to using thestandalone
reporter mode. Runningphp-fpm
as a daemon ingrpc
reporter mode will cause theskywalking-agent
reporter process immediately exit.