@@ -8,15 +8,81 @@ INI_FILE_NAME='99-ddtrace.ini'
88
99PATH=" ${PATH} :/usr/local/bin"
1010
11+ function println(){
12+ echo -e ' ###' " $@ "
13+ }
14+
15+ function append_configuration_to_file() {
16+ tee -a " $@ " << EOF
17+ ; Autogenerated by the DataDog post-install.sh script
18+
19+ [datadog]
20+ extension=${EXTENSION_FILE_PATH}
21+
22+ ; end of autogenerated part
23+ EOF
24+ }
25+
26+ function install_conf_d_file() {
27+ INI_FILE_PATH=" ${EXTENSION_CFG_DIR} /$INI_FILE_NAME "
28+
29+ println " Creating ddtrace.ini"
30+ println " \n"
31+
32+ append_configuration_to_file " ${INI_FILE_PATH} "
33+
34+ println " ddtrace.ini created"
35+ println
36+
37+ PHP_DDTRACE_INI=" $PHP_CFG_DIR /$INI_FILE_NAME "
38+
39+ println " Linking ddtrace.ini to ${PHP_DDTRACE_INI} "
40+ test -f " ${PHP_DDTRACE_INI} " && rm " ${PHP_DDTRACE_INI} "
41+ ln -s " $INI_FILE_PATH " " ${PHP_DDTRACE_INI} "
42+ }
43+
44+ function fail_print_and_exit() {
45+ println ' Failed enabling ddtrace extension'
46+ println
47+ println " The extension has been installed and couldn't be enabled"
48+ println " Try adding the extension manually to your PHP - php.ini - configuration file"
49+ println " e.g. by adding following line: "
50+ println
51+ println " extension=${EXTENSION_FILE_PATH} "
52+ println
53+ println " Note that your PHP API version must match the extension's API version"
54+ println " PHP API version can be found using following command"
55+ println
56+ println " php -i | grep 'PHP API'"
57+ println
58+
59+ exit 0 # exit - but do not fail the installtion
60+ }
61+
62+ function verify_installation() {
63+ ENABLED_VERSION=" $( php -r " echo phpversion('ddtrace');" ) "
64+
65+ if [[ -n ${ENABLED_VERSION} ]]; then
66+ println " Extension ${ENABLED_VERSION} enabled successfully"
67+ else
68+ fail_print_and_exit
69+ fi
70+ }
71+
1172mkdir -p $EXTENSION_DIR
1273mkdir -p $EXTENSION_CFG_DIR
1374mkdir -p $EXTENSION_LOGS_DIR
1475
15- echo -e ' \nLogging php -i to a file\n'
76+ println ' Installing DataDog PHP tracing extension (ddtrace)'
77+ println
78+ println ' Logging php -i to a file'
79+ println
80+
1681php -i > " $EXTENSION_LOGS_DIR /php-info.log"
1782
1883PHP_VERSION=$( php -i | grep ' PHP API' | awk ' {print $NF}' )
1984PHP_CFG_DIR=$( php --ini | grep ' Scan for additional .ini files in:' | sed -e ' s/Scan for additional .ini files in://g' | head -n 1 | awk ' {print $1}' )
85+
2086PHP_THREAD_SAFETY=$( php -i | grep ' Thread Safety' | awk ' {print $NF}' | grep -i enabled)
2187
2288VERSION_SUFFIX=" "
@@ -25,25 +91,25 @@ if [[ -n $PHP_THREAD_SAFETY ]]; then
2591fi
2692
2793EXTENSION_NAME=" ddtrace-${PHP_VERSION}${VERSION_SUFFIX} .so"
28- INI_FILE_PATH =" ${EXTENSION_CFG_DIR } /$INI_FILE_NAME "
94+ EXTENSION_FILE_PATH =" ${EXTENSION_DIR } /${EXTENSION_NAME} "
2995
30- echo -e " Creating ddtrace.ini\n###"
31- tee $INI_FILE_PATH << EOF
32- [datadog]
33- extension=${EXTENSION_DIR} /${EXTENSION_NAME}
34- EOF
35-
36- PHP_DDTRACE_INI=" $PHP_CFG_DIR /$INI_FILE_NAME "
96+ if [[ ! -e $PHP_CFG_DIR ]]; then
97+ println
98+ println ' conf.d folder not found falling back to appending extension config to main "php.ini"'
99+ PHP_CFG_FILE_PATH=$( php --ini | grep ' Configuration File (php.ini) Path:' | sed -e ' s/Configuration File (php.ini) Path://g' | head -n 1 | awk ' {print $1}' )
100+ PHP_CFG_FILE=" ${PHP_CFG_FILE_PATH} /php.ini"
101+ if [[ ! -e $PHP_CFG_FILE_PATH ]]; then
102+ fail_print_and_exit
103+ fi
37104
38- echo -e " ###\nLinking ddtrace.ini to ${PHP_DDTRACE_INI} \n"
39- test -f " ${PHP_DDTRACE_INI} " && rm " ${PHP_DDTRACE_INI} "
40- ln -s " $INI_FILE_PATH " " ${PHP_DDTRACE_INI} "
41-
42- ENABLED_VERSION=" $( php -r " echo phpversion('ddtrace');" ) "
43-
44- if [[ -n ${ENABLED_VERSION} ]]; then
45- echo -e " Extension ${ENABLED_VERSION} enabled successfully\n"
105+ if grep -q " ${EXTENSION_FILE_PATH} " " ${PHP_CFG_FILE} " ; then
106+ println
107+ println ' extension configuration already exists skipping'
108+ else
109+ append_configuration_to_file " ${PHP_CFG_FILE} "
110+ fi
46111else
47- echo -e " Failed enabling ddtrace extension\n"
48- exit 1
112+ install_conf_d_file
49113fi
114+
115+ verify_installation
0 commit comments