QNAP TS-251+开机自动保留PHP及Composer别名问题求助
我之前在TS-251+上也碰到过类似的问题,QNAP的系统确实会在重启后重置不少用户自定义的配置——毕竟系统分区是只读设计,临时修改的别名、脚本很容易丢失。下面给你两个问题的针对性解决方案:
QNAP支持通过/etc/profile.d/目录加载用户自定义的环境配置,这个目录下的脚本会在每次系统启动、用户登录时自动执行,完美解决别名持久化问题:
先找到PHP的实际路径
临时手动添加别名后,执行which php就能拿到PHP的绝对路径(比如可能是/usr/local/bin/php,或者App Center安装的PHP在/share/CACHEDEV1_DATA/.qpkg/PHP8.0/bin/php,根据你装的版本调整)。如果没临时加过,也可以用find / -name php搜索。创建自定义别名脚本
用编辑器创建一个脚本文件,比如:vi /etc/profile.d/php_alias.sh写入以下内容(替换成你找到的PHP路径):
alias php='/share/CACHEDEV1_DATA/.qpkg/PHP8.0/bin/php'给脚本添加执行权限
chmod +x /etc/profile.d/php_alias.sh测试生效
执行source /etc/profile.d/php_alias.sh,然后输入php -v验证版本,重启NAS后再重复验证即可。
Composer消失是因为你可能装在了系统临时目录(比如/tmp或系统分区),重启后会被清理。要把它装在数据盘的持久目录里:
安装Composer到数据盘
先切换到你的数据盘根目录(比如默认是/share/CACHEDEV1_DATA,可以通过QTS的“存储与快照总管”确认):cd /share/CACHEDEV1_DATA然后下载并安装Composer到当前目录:
curl -sS https://getcomposer.org/installer | php -- --install-dir=/share/CACHEDEV1_DATA --filename=composer如果QNAP没装curl,换成wget:
wget -O - https://getcomposer.org/installer | php -- --install-dir=/share/CACHEDEV1_DATA --filename=composer给Composer添加持久化别名
打开刚才创建的/etc/profile.d/php_alias.sh,追加一行:alias composer='/share/CACHEDEV1_DATA/composer'保存后执行
source /etc/profile.d/php_alias.sh,输入composer -V验证。确保Composer不被清理
因为数据盘是独立于系统分区的,重启、系统更新都不会删除这里的文件,所以Composer会一直保留。
如果担心QNAP系统更新会重置/etc/profile.d/目录,可以把别名脚本放在数据盘,然后修改/etc/profile文件,追加一行:
source /share/CACHEDEV1_DATA/scripts/php_alias.sh
(前提是你把脚本移到了/share/CACHEDEV1_DATA/scripts/目录下)这样即使系统更新重置了系统分区的配置,数据盘里的脚本还能正常加载。
内容的提问来源于stack exchange,提问作者Popeye

