php -- 取路径:getcwd()、__DIR__、__FILE__ 的区别

php -- 取路径:getcwd()、__DIR__、__FILE__ 的区别

getcwd() :显示是 在哪个文件里调用此文件 的目录

__DIR__ :当前内容写在哪个文件就显示这个文件目录

__FILE__ : 当前内容写在哪个文件就显示这个文件目录+文件名

 

由此可见

getcwd()和 __DIR__ 返回的是文件所在的绝对路径但是没有文件自身的名字在内。

__FILE__则是返回的是文件所在的绝对路径但是有文件自身的名字在内

 

以下是百度来的参考资料
在ch06中建立文件 test.php。目录为:ch06\test.php

内容如下:

复制代码
<?php
$a= getcwd();
//变量a的值为D:\php\zend6.1\ch6

$b=__FILE__;
//变量b的值为D:\php\zend6.1\ch6\test.php

?>
复制代码

 

下面在ch06项目下建立文件夹admincp文件夹。在admincp文件夹下建立文件fff.php。目录为:ch06\admincp\fff.php

代码如下

复制代码
<?php
include_once '../test.php';
echo $a;//变量a中的值是D:\php\zend6.1\ch6\admincp
echo '<pre>';
echo $b;//变量b中的值是D:\php\zend6.1\ch6\test.php
?>
复制代码

由此可见,在另一个文件中包含test.php文件。在test.php文件中用getcwd()获取的test.php的路径变量a在包含之后发生变化。目录结构加上了ffff.php的所在目录admincp,所以·在用文件定位时__FILE__较好

举例

复制代码
<?php

define('PATH_ROOT',($PATH_ROOT=dirname(__FILE__))?$PATH_ROOT:'..');
$PATH_admincp=PATH_ROOT.'\admincp';
$PATH_picture=PATH_ROOT.'\pciture';
$PATH_admincp_include=$PATH_admincp.'\include';

?>

<?php
include_once dirname(__FILE__).'/../../path.php';
include_once PATH_ROOT."/con_ini.php";

?>
复制代码

 

<?php // ======== 关键修复:指定运行时文件路径,避免权限问题 ========= // 将 pid、log 文件放在 /tmp 目录下,确保 www 用户可写 require_once __DIR__ . '/vendor/autoload.php'; // 调试日志 file_put_contents('/tmp/im-server-debug.log', "[" . date('Y-m-d H:i:s') . "] Booting...\n" . "Current script: " . __FILE__ . "\n" . "Current dir: " . getcwd() . "\n" . "__DIR__: " . __DIR__ . "\n" . "Autoload file exists: " . (file_exists(__DIR__ . '/vendor/autoload.php') ? 'YES' : 'NO') . "\n" . "Worker class exists: " . (class_exists('Workerman\\Worker') ? 'YES' : 'NO') . "\n\n", FILE_APPEND); use Workerman\Worker; use Workerman\Connection\TcpConnection; // ✅ 设置 PID 文件路径(防止因权限导致启动失败) Worker::$pidFile = '/tmp/wp-im-server.pid'; // ✅ 设置日志文件路径 Worker::$logFile = '/tmp/workerman.log'; // ✅ 设置标准输出重定向文件(捕获 echo 输出) Worker::$stdoutFile = '/tmp/workerman_stdout.log'; // ==================================================== require_once __DIR__ . '/vendor/autoload.php'; // 全局在线用户连接表 $onlineUsers = []; $ws_worker = new Worker("websocket://0.0.0.0:2121"); $ws_worker->count = 1; $ws_worker->onConnect = function(TcpConnection $conn) { echo "新连接来自 {$conn->remoteAddress}\n"; }; $ws_worker->onMessage = function(TcpConnection $conn, $data) use (&$onlineUsers) { $message = json_decode($data, true); if (!$message || !isset($message['type'])) return; switch ($message['type']) { case 'register': $userId = $message['userId']; $conn->userId = $userId; $onlineUsers[$userId] = $conn; echo "用户 {$userId} 上线\n"; // 广播上线消息 $broadcast = json_encode([ 'type' => 'user_online', 'userId' => $userId, 'userName' => $message['userName'] ]); foreach ($onlineUsers as $c) { $c->send($broadcast); } break; case 'private_msg': $fromId = $conn->userId; $toId = $message['to']; $msg = htmlspecialchars($message['message']); if (isset($onlineUsers[$toId])) { $onlineUsers[$toId]->send(json_encode([ 'type' => 'private_msg', 'from' => $fromId, 'message' => $msg, 'time' => date('H:i') ])); } break; } }; $ws_worker->onClose = function(TcpConnection $conn) use (&$onlineUsers) { $userId = $conn->userId ?? null; if ($userId && isset($onlineUsers[$userId])) { unset($onlineUsers[$userId]); $broadcast = json_encode(['type' => 'user_offline', 'userId' => $userId]); foreach ($onlineUsers as $c) { $c->send($broadcast); } echo "用户 {$userId} 下线\n"; } }; // 启动 Worker Worker::runAll();
最新发布
11-14
[root@yfw ~]# cd /etc/systemd/system [root@yfw system]# # 重载 systemd 配置 [root@yfw system]# systemctl daemon-reload [root@yfw system]# [root@yfw system]# # 停止当前失败的服务 [root@yfw system]# systemctl stop wp-im-server [root@yfw system]# [root@yfw system]# # 查看旧日志(确认之前是路径问题) [root@yfw system]# journalctl -u wp-im-server --no-pager -n 20 -- Logs begin at Wed 2025-11-12 20:13:15 CST, end at Thu 2025-11-13 17:29:51 CST. -- Nov 13 17:29:47 yfw.szrengjing.com systemd[1]: wp-im-server.service: Scheduled restart job, restart counter is at 87. Nov 13 17:29:47 yfw.szrengjing.com systemd[1]: Stopped WordPress IM Server (Workerman). Nov 13 17:29:47 yfw.szrengjing.com systemd[1]: Started WordPress IM Server (Workerman). Nov 13 17:29:47 yfw.szrengjing.com php[395633]: PHP Fatal error: Uncaught Error: Class 'Workerman\Worker' not found in /www/wwwroot/yfw_szrengjing_com/wp-content/plugins/wp-im-plugin/im-server.php:9 Nov 13 17:29:47 yfw.szrengjing.com php[395633]: Stack trace: Nov 13 17:29:47 yfw.szrengjing.com php[395633]: #0 {main} Nov 13 17:29:47 yfw.szrengjing.com php[395633]: thrown in /www/wwwroot/yfw_szrengjing_com/wp-content/plugins/wp-im-plugin/im-server.php on line 9 Nov 13 17:29:47 yfw.szrengjing.com php[395633]: Fatal error: Uncaught Error: Class 'Workerman\Worker' not found in /www/wwwroot/yfw_szrengjing_com/wp-content/plugins/wp-im-plugin/im-server.php:9 Nov 13 17:29:47 yfw.szrengjing.com php[395633]: Stack trace: Nov 13 17:29:47 yfw.szrengjing.com php[395633]: #0 {main} Nov 13 17:29:47 yfw.szrengjing.com php[395633]: thrown in /www/wwwroot/yfw_szrengjing_com/wp-content/plugins/wp-im-plugin/im-server.php on line 9 Nov 13 17:29:47 yfw.szrengjing.com systemd[1]: wp-im-server.service: Main process exited, code=exited, status=255/n/a Nov 13 17:29:47 yfw.szrengjing.com systemd[1]: wp-im-server.service: Failed with result 'exit-code'. Nov 13 17:29:51 yfw.szrengjing.com systemd[1]: wp-im-server.service: Service RestartSec=3s expired, scheduling restart. Nov 13 17:29:51 yfw.szrengjing.com systemd[1]: wp-im-server.service: Scheduled restart job, restart counter is at 88. Nov 13 17:29:51 yfw.szrengjing.com systemd[1]: Stopped WordPress IM Server (Workerman). Nov 13 17:29:51 yfw.szrengjing.com systemd[1]: Started WordPress IM Server (Workerman). Nov 13 17:29:51 yfw.szrengjing.com systemd[1]: wp-im-server.service: Main process exited, code=exited, status=255/n/a Nov 13 17:29:51 yfw.szrengjing.com systemd[1]: wp-im-server.service: Failed with result 'exit-code'. Nov 13 17:29:51 yfw.szrengjing.com systemd[1]: Stopped WordPress IM Server (Workerman). [root@yfw system]# [root@yfw system]# # 启动新配置的服务 [root@yfw system]# systemctl start wp-im-server [root@yfw system]# [root@yfw system]# # 查看实时日志 [root@yfw system]# journalctl -u wp-im-server -f -- Logs begin at Wed 2025-11-12 20:13:15 CST. -- Nov 13 17:29:47 yfw.szrengjing.com systemd[1]: wp-im-server.service: Main process exited, code=exited, status=255/n/a Nov 13 17:29:47 yfw.szrengjing.com systemd[1]: wp-im-server.service: Failed with result 'exit-code'. Nov 13 17:29:51 yfw.szrengjing.com systemd[1]: wp-im-server.service: Service RestartSec=3s expired, scheduling restart. Nov 13 17:29:51 yfw.szrengjing.com systemd[1]: wp-im-server.service: Scheduled restart job, restart counter is at 88. Nov 13 17:29:51 yfw.szrengjing.com systemd[1]: Stopped WordPress IM Server (Workerman). Nov 13 17:29:51 yfw.szrengjing.com systemd[1]: Started WordPress IM Server (Workerman). Nov 13 17:29:51 yfw.szrengjing.com systemd[1]: wp-im-server.service: Main process exited, code=exited, status=255/n/a Nov 13 17:29:51 yfw.szrengjing.com systemd[1]: wp-im-server.service: Failed with result 'exit-code'. Nov 13 17:29:51 yfw.szrengjing.com systemd[1]: Stopped WordPress IM Server (Workerman). Nov 13 17:29:51 yfw.szrengjing.com systemd[1]: Started WordPress IM Server (Workerman). Nov 13 17:29:51 yfw.szrengjing.com php[396241]: PHP Fatal error: Uncaught Error: Class 'Workerman\Worker' not found in /www/wwwroot/yfw_szrengjing_com/wp-content/plugins/wp-im-plugin/im-server.php:9 Nov 13 17:29:51 yfw.szrengjing.com php[396241]: Stack trace: Nov 13 17:29:51 yfw.szrengjing.com php[396241]: #0 {main} Nov 13 17:29:51 yfw.szrengjing.com php[396241]: thrown in /www/wwwroot/yfw_szrengjing_com/wp-content/plugins/wp-im-plugin/im-server.php on line 9 Nov 13 17:29:51 yfw.szrengjing.com php[396241]: Fatal error: Uncaught Error: Class 'Workerman\Worker' not found in /www/wwwroot/yfw_szrengjing_com/wp-content/plugins/wp-im-plugin/im-server.php:9 Nov 13 17:29:51 yfw.szrengjing.com php[396241]: Stack trace: Nov 13 17:29:51 yfw.szrengjing.com php[396241]: #0 {main} Nov 13 17:29:51 yfw.szrengjing.com php[396241]: thrown in /www/wwwroot/yfw_szrengjing_com/wp-content/plugins/wp-im-plugin/im-server.php on line 9 Nov 13 17:29:51 yfw.szrengjing.com systemd[1]: wp-im-server.service: Main process exited, code=exited, status=255/n/a Nov 13 17:29:51 yfw.szrengjing.com systemd[1]: wp-im-server.service: Failed with result 'exit-code'. Nov 13 17:29:54 yfw.szrengjing.com systemd[1]: wp-im-server.service: Service RestartSec=3s expired, scheduling restart. Nov 13 17:29:54 yfw.szrengjing.com systemd[1]: wp-im-server.service: Scheduled restart job, restart counter is at 1. Nov 13 17:29:54 yfw.szrengjing.com systemd[1]: Stopped WordPress IM Server (Workerman). Nov 13 17:29:54 yfw.szrengjing.com systemd[1]: Started WordPress IM Server (Workerman). Nov 13 17:29:54 yfw.szrengjing.com php[396244]: PHP Fatal error: Uncaught Error: Class 'Workerman\Worker' not found in /www/wwwroot/yfw_szrengjing_com/wp-content/plugins/wp-im-plugin/im-server.php:9 Nov 13 17:29:54 yfw.szrengjing.com php[396244]: Stack trace: Nov 13 17:29:54 yfw.szrengjing.com php[396244]: #0 {main} Nov 13 17:29:54 yfw.szrengjing.com php[396244]: thrown in /www/wwwroot/yfw_szrengjing_com/wp-content/plugins/wp-im-plugin/im-server.php on line 9 Nov 13 17:29:54 yfw.szrengjing.com php[396244]: Fatal error: Uncaught Error: Class 'Workerman\Worker' not found in /www/wwwroot/yfw_szrengjing_com/wp-content/plugins/wp-im-plugin/im-server.php:9 Nov 13 17:29:54 yfw.szrengjing.com php[396244]: Stack trace: Nov 13 17:29:54 yfw.szrengjing.com php[396244]: #0 {main} Nov 13 17:29:54 yfw.szrengjing.com php[396244]: thrown in /www/wwwroot/yfw_szrengjing_com/wp-content/plugins/wp-im-plugin/im-server.php on line 9 Nov 13 17:29:54 yfw.szrengjing.com systemd[1]: wp-im-server.service: Main process exited, code=exited, status=255/n/a Nov 13 17:29:54 yfw.szrengjing.com systemd[1]: wp-im-server.service: Failed with result 'exit-code'. Nov 13 17:29:58 yfw.szrengjing.com systemd[1]: wp-im-server.service: Service RestartSec=3s expired, scheduling restart. Nov 13 17:29:58 yfw.szrengjing.com systemd[1]: wp-im-server.service: Scheduled restart job, restart counter is at 2. Nov 13 17:29:58 yfw.szrengjing.com systemd[1]: Stopped WordPress IM Server (Workerman). Nov 13 17:29:58 yfw.szrengjing.com systemd[1]: Started WordPress IM Server (Workerman). Nov 13 17:29:58 yfw.szrengjing.com php[396248]: PHP Fatal error: Uncaught Error: Class 'Workerman\Worker' not found in /www/wwwroot/yfw_szrengjing_com/wp-content/plugins/wp-im-plugin/im-server.php:9 Nov 13 17:29:58 yfw.szrengjing.com php[396248]: Stack trace: Nov 13 17:29:58 yfw.szrengjing.com php[396248]: #0 {main} Nov 13 17:29:58 yfw.szrengjing.com php[396248]: thrown in /www/wwwroot/yfw_szrengjing_com/wp-content/plugins/wp-im-plugin/im-server.php on line 9 Nov 13 17:29:58 yfw.szrengjing.com php[396248]: Fatal error: Uncaught Error: Class 'Workerman\Worker' not found in /www/wwwroot/yfw_szrengjing_com/wp-content/plugins/wp-im-plugin/im-server.php:9 Nov 13 17:29:58 yfw.szrengjing.com php[396248]: Stack trace: Nov 13 17:29:58 yfw.szrengjing.com php[396248]: #0 {main} Nov 13 17:29:58 yfw.szrengjing.com php[396248]: thrown in /www/wwwroot/yfw_szrengjing_com/wp-content/plugins/wp-im-plugin/im-server.php on line 9 Nov 13 17:29:58 yfw.szrengjing.com systemd[1]: wp-im-server.service: Main process exited, code=exited, status=255/n/a Nov 13 17:29:58 yfw.szrengjing.com systemd[1]: wp-im-server.service: Failed with result 'exit-code'. Nov 13 17:30:01 yfw.szrengjing.com systemd[1]: wp-im-server.service: Service RestartSec=3s expired, sch
11-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值